码迷,mamicode.com
首页 > 其他好文 > 详细

卡特兰数问题

时间:2015-01-26 17:32:34      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

堆栈的出栈种数:

一般思路:

在这里堆栈有一个特点,对于任意一个数字,比之小的数字在其之前出栈,所以对于任意一个数字k最后一个出栈的模型为:

在k入栈之前,小于k的k-1个数字入栈并出栈,在k入栈之后,其余n-k个数字入栈并出栈,最后k出栈。so:

每一个k最后出栈的种数为:f(k)=f(k-1)*f(n-k)  然后求和即可。

建模:(与买票等等一个模型)

对于每一次进栈或者50块相当于数字‘1’,出栈或者100相当于数字‘0’,则要求对于2n个数组包含n个1,且任意前n个数字中1的个数比0的个数多,则通过算出所有排列,减去不合要求的种数即可:

合适:从2n个数字中选个n个位置放置1:C(2n,n)

不合适:对于奇数位2m+1,前2m+1位第一次出现0比1多,即m+1个0和m个1,(1.)则后面2n-2m-1个数字当中有n-m-1个0,以及n-m个1,(注意了)把1,0互换,则后面有n-m-1个1,以及n-m个0,则总体有n+1个0,和n-1个1,每个不合要求的排列对于一个由n+1个0,n-1个1对于的排列

对于任意一个由n+1个0以及n-1个1构成的2n个数字组成的任意一个排列都存在从第2m+1位开始第一次出现0比1多的现象,对于后面的n-m个0,与n-m-1个1互换,(变!)变成不合要求的的排列(n个1,n个0),总结:两者一一对应!

不合适的为:C(2n,n-1)

则:种类为f(n)=C(2n,n)-C(2n,n-1)  卡特兰数

卡特兰数问题

标签:

原文地址:http://my.oschina.net/tigereatspinach/blog/371860

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!