&卡特兰数学习笔记

一、关于卡特兰数

  卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

二、卡特兰数的一般公式

        卡特兰数满足以下公式:

  <1>.h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2,h(0)=h(1)=1)。

  <2>.h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)

  <3>.h(n)=C(2n,n)/(n+1)。

  也就是说,如果能把公式化成上面这种形式的数,就是卡特兰数

三、卡特兰数的应用

  1、进出栈问题

    Q:一个足够大的栈的进栈序列为1,2,3,⋯,n时有多少个不同的出栈序列?

    A:我们可以这样想,假设k是最后一个出栈的数。比k早进栈且早出栈的有k-1个数,一共有h(k-1)种方案。

    比k晚进栈且早出栈的有n-k个数,一共有h(n-k)种方案。所以一共有h(k-1)*h(n-k)种方案。

    显而易见,k取不同值时,产生的出栈序列是相互独立的,所以结果可以累加。

    k的取值范围为1至n,所以结果就为h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)。

原文地址:https://www.cnblogs.com/xingmi-weiyouni/p/11221874.html