Katalan数

Catalan数

问题:

​ 售票厅的票价50美分一张,2n个人排队,n个人有50美分,n个人有1美元,售票厅没有余额,为了能找零,有多少种排队方式?

数学公式法:

​ 2n个人,将每个人看成一样(若不一样,最后乘 n! 即可),则可以有Cn2nC2nn个排列方式。其中错误的排列有Cn+12nC2nn+1 种,则正确的排列有Cn2nCn+12nC2nn−C2nn+1种。

​ 令50美分的人为0, 100美分的人为1,各有n个。若令1的个数为n+1个,令0的个数为n-1个,则该2n个数的排列一定是错的,且排列数为Cn+12nC2nn+1 。若在第k个人出错,则前k个数的1比0多一个,且k个人后面的数也是1比0多一个。将k个人后面的数0变1,1变0,则为原问题的错误排列。同理,原问题在第k个人出错,即前k个数1比0多一个,将k个人后面的数0变1,1变0,则为新问题的错误排列。因此原问题的错误排列数 = 新问题的错误排列数。

1n+1Cn2n=Cn2nCn+12n1n+1C2nn=C2nn−C2nn+1即为最后的结果。

动态规划法:

​ 令有50美分的人数为m,有1美元的人数为n。则排队方式记为f(m,n)f(m,n)

f(m,n)={0f(m1,n)+f(m,n1)m<nmnf(m,n)={0m<nf(m−1,n)+f(m,n−1)m≥n

f(m,n)f(m,n)的值可以用矩阵表示,一共有m行n列。
111111012345002591400051428000014420000042100000110000122000135500149141401514284242

​ Catalan数即为对角线上的值。
递推公式:

f(n)n=0,1,2f(n),n=0,1,2⋯表示第n个Catalan数。

f(n)=f(0)f(n1)+f(1)f(n2)++f(n1)f(0)f(n)=f(0)f(n−1)+f(1)f(n−2)+⋯+f(n−1)f(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值