卡特兰数(网上集合)

卡特兰数:

1 通项公式:h(n)=C(n,2n)/(n+1)=(2n)!/((n!)*(n+1)!)

2递推公式:h(n)=((4*n-2)/(n+1))*h(n-1); h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0).

3前几项为:h(0)=1,h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,......

4应用场景:

a.括号化问题。
  矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)
b.出栈次序问题。
  一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
  类似:
  (1)有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人

买 票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)
  (2)在圆上选择2n个点,将这些点成对连接起来,使得所得到的n条线段不相交的方法数。

c.将多边行划分为三角形问题。
  (1)将一个凸多边形区域分成三角形区域的方法数?

  (2)类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她从不穿越(但可以碰到)从家到办公室的对角线,那            么有多少条可能的道路?

  (3)类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

圆桌周围有 2n个人,他们两两握手,但没有交叉的方案数。

d.给顶节点组成二叉树的问题。
  给定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)个)。

  • Cn表示用n个长方形填充一个高度为n的阶梯状图形的方法个数。下图为 n = 4的情况:

时间: 2024-12-17 04:19:39

卡特兰数(网上集合)的相关文章

卡特兰数 性质、例题及源码实现

第一部分 性质与例题 转自:https://blog.csdn.net/wookaikaiko/article/details/81105031 一.关于卡特兰数 卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564

HDU2067 卡特兰数

Catalan数: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2) 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1); 该递推关系的解为: h(n+1)=C(2n,n)/(n+1) (n=1,2,3,...) 递推关系的另类解: h(n) = C(2n, n) - C(2n, n-1) 卡特兰数的应用: •//n个节点的二叉树的所有可能形态数n个

2014年百度之星程序设计大赛 - 初赛(第一轮) hdu Grids (卡特兰数 大数除法取余 扩展gcd)

题目链接 分析:打表以后就能发现时卡特兰数, 但是有除法取余. f[i] = f[i-1]*(4*i - 2)/(i+1); 看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗.. 网上还有别人的解释,没看懂,贴一下: (a / b) % m = ( a % (m*b)) / b 笔者注:鉴于ACM题目特别喜欢M=1000000007,为质数: 当gcd(b,m) = 1, 有性质: (a/b)%m = (a*b^-1)%m, 其中b^-1是b模m的逆

卡特兰数-Catalan数

卡特兰数的含义: 说到卡特兰数,就不得不提及卡特兰数序列,卡特兰数序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个卡特兰数数,前几个卡特兰数数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, -运用卡特兰数可以解决许多实际问题上的计数问题 卡特兰数的几个基本性质以及变形公式:(提示括号一上n一下m表示n中选择m个的组合数) 1.-->> 2. 3. 4. 以上的推导公式为其基本性质总结,

hdu4165(简单递推,实则卡特兰数的应用)

这道题之前自己做的时候并没有反应过来是求卡特兰数,当时是按递推来想的.后来查了下HDU4165,结果一看大标题就说是卡特兰数,自己想了想,还真是那么回事.主要还是对于卡特兰数用的不多,也就当时没立马反应过来了.下面介绍这道题我的思路,然后对卡特兰数再做一些补充. 本题题意:罐子里有N片相同的药片,开始的时候药片都是完整的一整片.然后一个每天从中任意取一片,如果该药片是完整的一整片,那么他会吃点半片,然后将剩余半片扔回罐里,如果恰好是半片,那他直接吃掉拿出来的半片.显然2N天后,他吃完全部N片药片

卡特兰数应用

下面应用转自Wikipedia(http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0): 组合数学中有非常多的组合结构可以用卡塔兰数来计数.在Richard P. Stanley的Enumerative Combinatorics: Volume 2一书的习题中包括了66个相异的可由卡塔兰数表达的组合结构.以下用n=3和n=4举若干例: Cn表示长度2n的dyck word的个数.Dyck word是一个有n个X和n个

卡特兰数 斯特林数

卡特兰数\(C_{2n}^n - C_{2n}^{n-1}\) 还有常用的递推: int main() { scanf("%d", &n); f[0] = 1, f[1] = 1; for(int i=2; i<=n; i++) { for(int j=0; j<i; j++) { f[i] += f[j] * f[i-j-1]; } } printf("%d", f[n]); return 0; } 貌似很多题都是第0项为1,第一项为1,第二项

卡特兰数和超级卡特兰数

卡特兰数和超级卡特兰数 这篇博客主要是想讲一下超级卡特兰数(大施罗德数),顺带就想讲一下卡特兰数. 卡特兰数 定义 卡特兰数记为\(C_n\) \(C_1=1\) \(\forall n \geq 2, C_n=\sum_{i=1}^{n-1}C_i C_{n-i}\) 前几项大概是: 1, 1, 2, 5, 14, 42, 132...... 直接递推未免效率太低,我们考虑用生成函数优化. 显然有\(C(x)=C(x)^2+x\) 解得\(C(x)={1-(1-4x)^{\frac 1 2}\

卡特兰数爽文讲解

这个文章是基于别的博客来讲的,反正根据自己的理解,然后写出来的.欢迎大佬吐槽. 卡特兰序列:1,1,2,5,14,42,132,429,1430...   通项就是 卡特兰数:卡特兰序列中的每一项,为卡特兰数, 既: 卡特兰数的引入: 在组合数学中有一类问题,为计数问题,比如正常的排列组合,斐波拉契数列等等都可以用来计数. 现在给出一个情景:对于一个n*n的正方形网格,每次我们都能向右或者向上移动一格,并且,路径在网格的下三角形的区域内,那么从(0,0)->(n, n)总的路径为多少? 这样的路