Catalan数的应用场景

来源:互联网 发布:卫星数据 编辑:程序博客网 时间:2024/04/30 07:39

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

n对括号相当于有2n个符号,n个左括号、n个右括号,可以设问题的解为f(2n)

f(2n) = f(0)*f(2n-2) + f(2)*f(2n - 4) + ... + f(2n - 4)*f(2)+ f(2n-2)*f(0)。

解释:f(0) * f(2n-2)表示第0个字符与第1个字符匹配,同时剩余字符分成两个部分,一部分为0个字符,另一部分为2n-2个字符,然后对这两部分中求每一部分中有多少匹配方式,结果相乘。f(2)*f(2n-4)表示第0个字符与第3个字符匹配,同时剩余字符分成两个部分,一部分为2个字符,另一部分为2n-4个字符。依次类推。

假设f(0) = 1,f(2) = 1, f(4) = 2, f(6) = 5。结合递归式,不难发现f(2n) 等于h(n),即第n个卡特兰数就是n对括号的匹配种数。

2、1,2,3,4…n,n个数进栈,有多少种出栈顺序,写出递推公式?

令f[n]表示n个数进栈时,出栈顺序的个数。另外为1-n个数编号分别为a,b,c,d… 当n=1时,f[1]=1,当n=2时,f[2]=2,当n=3时,c出栈的位置可能在1、2或者3.当在1时,剩下的是n=2的子问题,也就是f[2];当在2时,剩下的是两个n=1的子问题,也就是f[1]*f[1];当n在3时,剩下的又是n=2的子问题,也就是f[2]。所以f[3]=f[2]+f[1]*f[1]+f[2]令f[0]=1,则f[3]=f[0]*[2]+f[1]*f[1]+f[2]*f[0],依次类推f[n]=f[0]*f[n-1]+f[1]*f[n-2]+…+f[n-1]*f[0]。第n个卡特兰数就是n个数进栈的出栈顺序种数。

3、n个节点构成的二叉树,共有多少种情形?

第n个卡特兰数就是n个节点构成二叉树的种数。

4、对于一个n*n的正方形网格,每次我们能向右或者向上移动一格,那么从左下角到右上角的所有在副对角线右下方的路径总数为多少?

第n个卡特兰数就是此题的结果。

5、对于集合{1,2,3...2n}的不交叉划分的数目为多少?

第n个卡特兰数就是当有2n个元素的集合不交叉划分的数目。

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

第n个卡特兰数就是2n个点连线不相交的n条线段。

7、有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?

2n个人,方法的个数是第n个卡特兰数

8、在一个2*n的格子中填入1到2n这些数值使得每个格子内的数值都比其右边和上边的所有数值都小的情况数

在2*n的格子中,符合要求的情况数为第n个卡特兰数。

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

2n个人,符合要求的排列的方式种数为第n个卡特兰数

0 0
原创粉丝点击