一、定义和公式:
----------------------------------------------------------------------------------------
令h(0)=1,h(1)=1,catalan数满足递推式 :
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)
卡特兰数又称卡塔兰数,卡特兰数 [组合数学] 常出现在各种计数问题
另类递推式:
**h(n)=h(n-1)*(4*n-2)/(n+1);**
递推关系的解为:
**h(n)=C(2n,n)/(n+1) (n=0,1,2,...)**
递推关系的另类解为:
**h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)**
二、具体问题:
----------------------------------------------------------------------------------------------------------------------------------
1.对于在n位的2进制中,有m个0,其余为1的catalan数为:C(n,m)-C(n,m-1)
2.矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)
3.一个栈(无穷大)的[进栈] 序列为1,2,3,…,n,有多少个不同的出栈序列?
4.在一个[凸多边形] 中,通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。任务是键盘上输入凸多边形的边数n,求不同划分的方案数f(n)=h(n-2) (n是边数,边数大于3)
5.给定N个[节点] ,能构成多少种不同的[二叉搜索树]
(能构成h(N)个)
6.给定n对括号,求括号正确配对的字符串数,例如:
0对括号:[空序列] 1种可能
1对括号:() 1种可能
2对括号:()() (()) 2种可能
3对括号:((())) ()(()) ()()() (())() (()()) 5种可能
那么问题来了,n对括号有多少种正确配对的可能呢?
h(n)
7.有n个1和m个-1(n>=m),共n+m个数排成一列,满足对所有0<=k<=n+m的前k个数的部分和Sk >= 0的排列数?
C (n+m, m) - C (n+m, m-1)