卡特兰数

部分摘自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数。
}

posted @ 2019-07-21 17:50  three_D  阅读(365)  评论(1编辑  收藏  举报