卡特兰数
部分摘自wxh学长课件......
{
卡特兰数是组合数学中经常出现在计数问题的数列,
满足:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)
另一种递推公式:h(n)=h(n-1)*(4*n-2)/(n+1)
通项公式:h(n)=C(2*n,n)-C(2*n,n-1) h(n)=C(2*n,n)/(n+1) h(n)=1/n*C(2*n-2,n-1);
}
对于以上式子理解:
{
h(n)第一个递推式主要可以用来判定这个式子或题是否是catalan数。(反正我是用组合数推不出来。)。
h(n)第一个递推式是基础,第二个可以用来线性递推一下
通向公式第3个和第2个可以直接求出特定的h值。 第一个感觉可以用来在组合数已经求出来的情况下比较快速计算出。
}
注意点:1.n>=2 2.组合数是否取模—>能否用C直接求;
应用:
{
出栈次序;—>设第k个数最后一次出栈将问题确定化缩小化,感觉这里的思想比较优秀。
括号匹配;
二叉树计数; ->给节点组成二叉树。
有限制的网格路径数
}
证明:
{
用到了一个叫生成函数的东西。
发正我现在是看不懂....................
https://blog.csdn.net/acdreamers/article/details/7628667 先屯起来。
}
个人遇到出栈次序上的问题
{
一直想知道为什么是h(n),也就是卡特兰数;
然后发现其实是推出f(n)=f(k-1)*f(n-k),也就是推出了一个符合catalan数性质的式子由此发现其是catalan数。
}