Fork me on GitHub

卡特兰数列(蒟蒻的学习笔记)

卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190 ...


它最基本的递推为 

f(n)=f(0)*f(n-1) + f(1)*f(n-2) + ... + f(n-1)*f(0)   (n>=2, f(1)=1, f(0)=1)

 

应用

一.比如说要求由n个节点组成的二叉树个数,可以这样思考:

 

所以很容易发现符合卡特兰数的递推式啦。

 

二.给定n个数字1,2,3,4...,n,求它们出栈顺序的方案数

这次就不画图了。。

设出栈的最后一个元素为k,那么入栈k之前的k-1个元素出栈方案数为h(k-1),k入栈后,k之后的n-k个元素出栈方案为h(n-k),则k最后出栈的方案数为,h(k-1)*h(n-k),不同k之间的方案数显然没有联系,所以之间是加法关系,加起来就好了。明显可以看出是卡特兰数。

 

三.给一个n条边的凸多变形,用几条不相交的顶点连线,把它分成若干三角形,求有几种划分方案

       图画的好丑,不要介意

   考虑把这个八边形划分成1,2两个部分,那么多边形1就是六边形,多边形2是4边形。所以这种划分方式的总方案为h(6-3)*h(4-3),不同的划分方案的值加起来,就是卡特兰数了。

 

posted @ 2018-10-08 18:46  H_LAUV  阅读(1045)  评论(0编辑  收藏  举报
Live2D //博客园自带,可加可不加