卡特兰数(简单说说)

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卡特兰数(简单说说)相关的知识,希望对你有一定的参考价值。

参考题解:
【算法】震惊!!!史上最详细的卡特兰数浅谈!!!
卡特兰数(好像很有用的说)

介绍

卡特兰数是组合数学中一种著名数列,其前几项为:

1, 2, 5, 14, 42, 
132, 429, 1430, 4862, 16796, 
58786, 208012, 742900, 2674440, 9694845, 
35357670, 129644790, 477638700, 1767263190, 
6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 

通项式为:
f ( n ) = C 2 n n n + 1 = ( 2 n ) ! ( n + 1 ) ! n ! f(n)=\\frac{C_{2n}^{n}}{n+1}=\\frac{(2n)!}{(n+1)!n!} f(n)=n+1C2nn=(n+1)!n!(2n)!
递推式为:
f ( n ) = ∑ i = 0 n − 1 f ( i ) ∗ f ( n − i − 1 ) f(n)=\\sum_{i=0}^{n-1}f(i)*f(n-i-1) f(n)=i=0n1f(i)f(ni1)
常用的是通项式变形:
f ( n ) = C 2 n n − C 2 n n − 1 f(n)=C_{2n}^{n}-C_{2n}^{n-1} f(n)=C2nnC2nn1

经典问题:

一.01序列问题

给出一个n,要求一个长度为2n的01序列,使得序列的任意前缀中1的个数不少于0的个数,
以下为长度为6的序列:
111000 101100 101010 110010 110100

括号问题

矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)

出栈次序问题

一个栈(无穷大)的进栈序列为1,2,3,…n,有多少个不同的出栈序列?

多边形划分为三角形问题

将一个凸多边形区域分成三角形区域的方法数?

给顶节点组成二叉树问题

给定N个节点,能构成多少种形状不同的二叉树?
  先去一个点作为顶点,然后左边依次可以取0至N-1个相对应的,右边是N-1到0个,两两配对相乘,就是h(0)*h(n-1) + h(2)*h(n-2) +…+ h(n-1)h(0)=h(n)(能构成h(N)个)

例题:

洛谷1641 生成字符串
Loj10238网格
洛谷P2532 树屋阶梯
洛谷P3200 有趣的数列

以上是关于卡特兰数(简单说说)的主要内容,如果未能解决你的问题,请参考以下文章

卡特兰数 codevs 1086 栈

HDU 1023(卡特兰数 数学)

栈(卡特兰数模板)

洛谷 p1044 栈 Catalan(卡特兰数)经典题

P1044 栈 卡特兰数/记忆化搜索

卡特兰数-Catalan数