卡特兰数

1、卡特兰数

卡特兰通过解决凸n边形的剖分得到了数列Cn

凸n+2边形用其n-1条对角线把此凸n+2边形分割为互不重叠的三角形,这种分法的总数为Cn

为纪念卡特兰,人们使用“卡特兰数”来命名这一数列。

据说有几十种看上去毫不相干的组合计数问题的最终表达式都是卡特兰数的形式。

卡特兰数在数学竞赛、信息学竞赛、组合数学、计算机编程等都会有其不同侧面的介绍。

前几个卡特兰数:规定C0=1,而

C1=1,C2=2,C3=5,C4=14,C5=42,

C6=132,C7=429,C8=1430,C9=4862,C10=16796,

C11=58786,C12=208012,C13=742900,C14=2674440,C15=9694845。

递推公式


2、有意思的应用

饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?

答:得数是第n个卡特兰数Cn


3、poj 1095

要构造出一颗编号为n的二叉树,只需要知道左子树和右子树的编号,就可以进行递归构造:
     1> 计算出编号为n的二叉树有几个节点:将n依次减去h[1],h[2],……,h[i],直到不能减为止,则此二叉树共有(i+1)个节点,除去根节点,则左右子树共有i个节点.
     2> 计算左右子树各有几个节点:将n依次减去h[1]*h[i-1],h[2]*h[i-2],……,h[j]*h[i-j],直到不能减为止,则左子树有(j+1)个节点,右子树有i-(j+1)个节点.
     3> 计算左右子树的编号:计算左子树是具有(j+1)个节点的二叉树中的第x棵,右子树是具有i-(j+1)个节点的二叉树中的第y棵,将n整除h[i-(j+1)],商即为x,余数即为y.




你可能感兴趣的:(卡特兰数)