卡特兰数(Catalan)相关问题

来源:互联网 发布:ios7软件下载 编辑:程序博客网 时间:2024/05/02 00:01

卡特兰数重要公式一

Cn2nCn+12n=1n+1Cn2n

应用例题

假设有n对左右括号,请求出合法的排列有多少个?合法是指每一个括号都可以找到与之配对的括号,比如n=1时,()是合法的,但是)(为不合法。
给定一个整数n,请返回所求的合法排列数。保证结果在int范围内。

2n个人排队买票,n个人拿5块钱,n个人拿10块钱,票价是5块钱1张,每个人买一张票,售票员手里没有零钱,问有多少种排队方法让售票员可以顺利卖票。
给定一个整数n,请返回所求的排队方案个数。保证结果在int范围内。

n个数进出栈的顺序有多少种?假设栈的容量无限大。
给定一个整数n,请返回所求的进出栈顺序个数。保证结果在int范围内。

编程实现

class Parenthesis {public:    int countLegalWays(int n) {        // 卡特兰数公式        int i;        int temp1=1;        for(i=2*n;i>n;i--){            temp1*=i;        }        int temp2=1;        for(i=n;i>0;i--){            temp2*=i;        }        int c=temp1/temp2;        return c/(n+1);               }};

卡特兰数重要公式二


f(0)=1; f(1)=1; f(2)=2; f(3)=5;
且满足
f(n)=f(n1)f(0)+f(n2)f(1)+f(n3)f(2)++f(2)f(n3)+f(1)f(n2)+f(0)f(n1)

f(n)=1n+1Cn2n

应用例题

求n个无差别的节点构成的二叉树有多少种不同的结构?
给定一个整数n,请返回不同结构的二叉树的个数。保证结果在int范围内

1 0