卡特兰数 Catalan 数

 


最近看了一些 关于卡塔兰数的讲解 总结一下 卡特兰数 (总结的不好)


卡特兰数,  组合数学中的一种,其实 我们经常会遇到类似卡卡特兰数的问题, 例如排队问题, 对角线,多边形切割问题等等都是 卡特兰数,  

                       前几项:1,2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786,208012…

                       公式      C(n)=C(2n,n)/(n+1)



卡特兰数的

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


一维数组呈现方式   但是 只能到33  超过33 后会溢出

long long int c[45]   

	c[1]=1;
	for(i=2;i<40;i++)
	{
		c[i]=c[i-1]*(4*i-2)/(i+1); 
	}


  卡特兰  主要应用在

  1. 括号化问题,

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

        ((()))     ()(())      ()()()      (())()      (()())


2        将多边行划分为三角形问题

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

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

故 可用两个for循环求解

	dp[1][1]=1;
	for(i=2;i<40;i++)
		for(j=1;j<=i;j++)
		{
			dp[i][j]=dp[i-1][j]+dp[i][j-1];
		}


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


3. 出栈次序问题。一个栈(无穷大)的进栈序列为1、2、3、...、n,有多少个不同的出栈序列?

类似的  50,100 元找零问题

4. 给顶节点组成二叉树的问题。



典型例题 

2067 小兔子棋盘   http://acm.hdu.edu.cn/showproblem.php?pid=2067

hdu 1134  (类似于多边形分解)    http://acm.hdu.edu.cn/showproblem.php?pid=1134

hdu1023 (栈的次序)  http://acm.hdu.edu.cn/showproblem.php?pid=1023

hdu 1133 (买票问题)  http://acm.hdu.edu.cn/showproblem.php?pid=1133

hdu 1130(二叉树)  http://acm.hdu.edu.cn/showproblem.php?pid=1130



posted @ 2017-04-14 17:43  Sizaif  阅读(187)  评论(0编辑  收藏  举报