卡特兰数重要公式一
Cn2n−Cn+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(n−1)f(0)+f(n−2)f(1)+f(n−3)f(2)+……+f(2)f(n−3)+f(1)f(n−2)+f(0)f(n−1)
时
f(n)=1n+1Cn2n
应用例题
求n个无差别的节点构成的二叉树有多少种不同的结构?
给定一个整数n,请返回不同结构的二叉树的个数。保证结果在int范围内