Catalan数
问题:
售票厅的票价50美分一张,2n个人排队,n个人有50美分,n个人有1美元,售票厅没有余额,为了能找零,有多少种排队方式?
数学公式法:
2n个人,将每个人看成一样(若不一样,最后乘 n! 即可),则可以有 Cn2n C 2 n n 个排列方式。其中错误的排列有 Cn+12n C 2 n n + 1 种,则正确的排列有 Cn2n−Cn+12n C 2 n n − C 2 n n + 1 种。
令50美分的人为0, 100美分的人为1,各有n个。若令1的个数为n+1个,令0的个数为n-1个,则该2n个数的排列一定是错的,且排列数为 Cn+12n C 2 n n + 1 。若在第k个人出错,则前k个数的1比0多一个,且k个人后面的数也是1比0多一个。将k个人后面的数0变1,1变0,则为原问题的错误排列。同理,原问题在第k个人出错,即前k个数1比0多一个,将k个人后面的数0变1,1变0,则为新问题的错误排列。因此原问题的错误排列数 = 新问题的错误排列数。
1n+1Cn2n=Cn2n−Cn+12n 1 n + 1 C 2 n n = C 2 n n − C 2 n n + 1 即为最后的结果。
动态规划法:
令有50美分的人数为m,有1美元的人数为n。则排队方式记为
f(m,n)
f
(
m
,
n
)
。
f(m,n) f ( m , n ) 的值可以用矩阵表示,一共有m行n列。
Catalan数即为对角线上的值。
递推公式:
f(n),n=0,1,2⋯
f
(
n
)
,
n
=
0
,
1
,
2
⋯
表示第n个Catalan数。