卡特兰数(Catalan)公式、证明、代码、典例

大佬博客:传送门

组合数公式:

 一、关于卡特兰数

       卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

      二、卡特兰数的一般公式

      卡特兰数满足以下性质:

      令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)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)。这个公式还可以更简单得化为h(n)=C(2n,n)/(n+1)。后一个公式都可以通过前一个公式经过几步简单的演算得来,大家可以拿起笔试试,一两分钟就可以搞定。

 

1. 出栈次序

2. 01序列

3. ‘+1’ ‘-1’序列

4. 括号序列

5. 找零问题

6. 矩阵链乘

7. 二叉树计数

8. 凸多边形划分

9. 圆上n条线段

10. 单调路径

11. 填充阶梯图形

12. 摞碗问题

13. 汽车胡同加油问题

14. 还书借书问题

15. 高矮排队问题

典例:

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

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

3. ‘+1’ ‘-1’序列

n个+1和n个-1构成的2n项 a1,a2,⋅⋅⋅,a2na1​,a2​,⋅⋅⋅,a2n​,其部分和满足非负性质,即a1+a2+⋅⋅⋅+ak>=0a1​+a2​+⋅⋅⋅+ak​>=0,(k=1,2,···,2n) ,有多少个不同的此序列?

4. 括号序列

n对括号有多少种匹配方式?

5. 找零问题

2n个人要买票价为五元的电影票,每人只买一张,但是售票员没有钱找零。其中,n个人持有五元,另外n个人持有十元,问在不发生找零困难的情况下,有多少种排队方法?

6. 矩阵链乘

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

7. 二叉树计数

有n个节点构成的二叉树(非叶子节点都有2个儿子),共有多少种情形?
有n+1个叶子的二叉树的个数?

8. 凸多边形划分

在一个n边形中,通过不相交于n边形内部的对角线,把n边形拆分为若干个三角形,问有多少种拆分方案?


9. 圆上n条线段

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

10. 单调路径

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

11. 填充阶梯图形

用n个长方形填充一个高度为n的阶梯状图形的方法个数?

12. 摞碗问题

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

13. 汽车胡同加油问题

一个汽车队在狭窄的路面上行驶,不得超车,但可以进入一个死胡同去加油,然后再插队行驶,共有n辆汽车,问共有多少种不同的方式使得车队开出城去?

14. 还书借书问题

在图书馆一共2n个人在排队,n个还《面试宝典》一书,n个在借《面试宝典》一书,图书馆此时没有了面试宝典了,求他们排队的总数

15. 高矮排队问题

2n个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

原文地址:https://www.cnblogs.com/nlyzl/p/11564195.html