Catalan数

抛出一个问题:

一个长度是2n的0/1串,包含n个0以及n个1,需要保证对于任何一个k<=2m满足1~k中0的个数要大于等于1的个数。
问方案数:

看起来好像好难…

Catalan数

显然我们知道在总方案数是 C 2 n n C_{2n}^{n} C2nn

使用容斥原理

减去那些不合法的
我们需要证明两个引理:

①每一个问题中不合法的序列都一定对应一个有(n+1)个0和(n-1)个1的序列。
②对于一个有(n+1)个0和(n-1)个1的序列一定对应一个问题中的不合法序列。

要想得到证明我们必须证明这两个引理:

①对于一个不合法序列一定可以找到一个k满足

  • 第k个数是1
  • 1~k-1的01个数相同

那么这个序列就是不合法的。
如果我们将1~k位上的数分别取反,得到的另一个串,这一定是包含(n+1)个0,(n-1)个1的序列,这样就证明了每一个问题中不合法的序列都一定对应一个有(n+1)个0和(n-1)个1的序列。

②用上述方法可以很容易的证得对于一个有(n+1)个0和(n-1)个1的序列一定对应一个问题中的不合法序列。

于是这样我们就可以推出 C n t n = C 2 n n − C 2 n n + 1 Cnt_n=C^n_{2n}-C^{n+1}_{2n} Cntn=C2nnC2nn+1

这样我们来简化一下式子:
C 2 n n − C 2 n n + 1 C^n_{2n}-C^{n+1}_{2n} C2nnC2nn+1
= ( 2 n ) ! ( n ! ) 2 − ( 2 n ) ! ( n + 1 ) ! ( n − 1 ) ! =\frac{(2n)!}{(n!)^2}-\frac{(2n)!}{(n+1)!(n-1)!} =(n!)2(2n)!(n+1)!(n1)!(2n)!
= ( 2 n ) ! [ ( n + 1 ) ! ( n − 1 ) ! − ( n ! ) 2 ] ( n ! ) 2 ( n + 1 ) ! ( n − 1 ) ! =\frac{ (2n)! [(n+1)!(n-1)!-(n!)^2]}{(n!)^2 (n+1)! (n-1)!} =(n!)2(n+1)!(n1)!(2n)![(n+1)!(n1)!(n!)2]
= ( 2 n ) ! [ ( n + 1 ) ! n ! n − ( n ! ) 2 ] ( n ! ) 2 ( n + 1 ) ! ( n − 1 ) ! =\frac{ (2n)! [ \frac{(n+1)!n!}{n}-(n!)^2 ]}{(n!)^2 (n+1)! (n-1)!} =(n!)2(n+1)!(n1)!(2n)![n(n+1)!n!(n!)2]
= ( 2 n ) ! [ ( n + 1 ) ! n ! − ( n ! ) 2 ⋅ n n ] ( n ! ) 2 ( n + 1 ) ! ( n − 1 ) ! =\frac{ (2n)! [ \frac{(n+1)!n!-(n!)^2·n}{n} ]}{(n!)^2 (n+1)! (n-1)!} =(n!)2(n+1)!(n1)!(2n)![n(n+1)!n!(n!)2n]
= ( 2 n ) ! [ n ! [ ( n + 1 ) ! − n ! ⋅ n ] n ] ( n ! ) 2 ( n + 1 ) ! ( n − 1 ) ! =\frac{ (2n)! [ \frac{n![(n+1)!-n!·n]}{n} ]}{(n!)^2 (n+1)! (n-1)!} =(n!)2(n+1)!(n1)!(2n)![nn![(n+1)!n!n]]
= ( 2 n ) ! ( n − 1 ) ! n ! ( n ! ) 2 ( n + 1 ) ! ( n − 1 ) ! =\frac{ (2n)! (n-1)!n! }{(n!)^2 (n+1)! (n-1)!} =(n!)2(n+1)!(n1)!(2n)!(n1)!n!
= ( 2 n ) ! n ! ( n + 1 ) ! =\frac{ (2n)!}{n! (n+1)!} =n!(n+1)!(2n)!
= ( 2 n ) ! ( n ! ) 2 ( n + 1 ) =\frac{ (2n)!}{(n!)^2 (n+1)} =(n!)2(n+1)(2n)!
= C 2 n n n + 1 =\frac{C^n_{2n}}{n+1} =n+1C2nn

所以
C n t n = C 2 n n n + 1 Cnt_n=\frac{C^n_{2n}}{n+1} Cntn=n+1C2nn

Catalan数的应用有很多,比如合法的括号序列个数、n个点组成的二叉树个数…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值