标签:方案 技术 数学 简单 mamicode 常用 csdn http art
这一块一直学的不太好,基本停留在看到题可以看出来是个卡特兰数,但进一步的思考和推导,对我来说就变得困难起来,所以今天趁有时间,复习一下
卡特兰数多用在组合数学的计数问题中,多是那种有两种选择,也就是求有限制的方案数
$h(n)=h(0){\times}h(n-1)+h(1){\times}h(n-2)+{\cdots}+h(n-1){\times}h(0)$
$h(n)=\frac{h(n-1){\times}(4{\times}n-2)}{n+1}$
$h(n)=C_{2{\times}n}^{n}-C_{2{\times}n}^{n-1}$
$h(n)=\frac{C_{2{\times}n}^{n}}{n+1}$
最后两个通项公式在组合数学中较为常用,关于最后两个通项公式的推倒,我简单推一下,其实就是对组合数公式的应用
$h(n)=C_{2{\times}n}^{n}-C_{2{\times}n}^{n-1}$
$=C_{2{\times}n}^{n}-\frac{(2{\times}n)!{\times}n}{n!{\times}n!{\times}(n+1)}$
$=C_{2{\times}n}^{n}-C_{2{\times}n}^{n}{\times}\frac{n}{n+1}$
$=\frac{1}{n+1}{\times}C_{2{\times}n}^{n}$
常见的卡特兰数最基本最常见的模型是进出栈问题,也就是对于n个数,求其不同出栈次序的方案数,下面来自学长的解释
关键在于那个前缀和不小于零,很多题都可以简化为这种问题,对于卡特兰数这种进出栈模型,在下面还会提到另一种理解
1.进出栈模型
2.二叉树计数
3.多边形划分
4.括号匹配
5.有限制的网格路径
当$n=m$时,这道题就是一个裸的卡特兰数,向右看作进栈,向上看为出栈
那当$n>m$时呢?我们来考虑一下对于卡特兰数的另一种理解
我们将这道题化减为一个模型,给你$n$个1,$m$个0,要求一个$01$串,使得任意前k位中0的个数不少与1的个数,双倍经验,我们考虑用总的方案数减去不满足的方案数,总方案显然是$C_{n+m}^{m}$,现在我们考虑不满足要求的01串,前提是满足$n$个$1$,$m$个$0$,对于一个不合法$01$串,我们设在第$i$位上为1,且第一次出现1的个数-0的个数=1,那么此时假如我们把这个串的前$i$个位置,$01$取反,那在此时的串中就出现了$m+1$个0和$n-1$个1,我们发现这种相互转化的关系是唯一对应的,所以不合法的$01$串的方案数是$C_{n+m}^{m+1}$,所以最后的答案就是$C_{n+m}^{m}-C_{n+m}^{m-1}$,当$n=m$时,这个式子就是卡特兰数的通项公式
标签:方案 技术 数学 简单 mamicode 常用 csdn http art
原文地址:https://www.cnblogs.com/hzjuruo/p/11373035.html