卡特兰数(Catalan)相关问题

卡特兰数重要公式一

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范围内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值