1. 程式人生 > >卡特蘭數的遞推公式

卡特蘭數的遞推公式

買票問題:一張票5元,有8個人有5元,8個人有10元,開始售票員沒有錢,每人買一張票,求不發生售票員找不開錢的情況有多少種?

也是卡特蘭數的變形,把有5元的看成1,10元的看成0,等價於n個1,n個0組成的2n為二進位制數,從左往右,1的個數>=0的個數。從2n個位置填入n個1的方法有C(2n,n)種,其他位置自動填0;從C(2n,n)中減去不合法的即可;不合法發生在某奇數位2m+1上,前面有m+1個0,m個1;

而此後的2n-2m-1個位置上,會有n-m個1,n-m-1個0如果這後面2n-2m-1的位置上0,1位置互換,即有n-m個0,n-m-1個1;結果得n+1個0,和n-1個1組成的2n
為二進位制數,所以一個不合法的數對應一個n-1個1,n+1個0組成的一個排列;

反過來,任何一個有n+1個0,n-1個1組成的2n位二進位制,因為0個個數多兩個,所以會在某一奇數位2m+1上出現0的統計個數>1的個數,前面有m+1個0,m個1;而此後的2n-2m-1個位置上,會有n-m-1個1,n-m個0同樣後面的0,1互換,這樣就組成了一個由n個1,n個0組成的2n位二進位制數!而此序列是不合法的。即n+1個1,n-1個0組成的2n位數比對應一個不合法的n個1,n個0組成的2n位數!

例如:11000100

對應:11000011

在第5位出現異常,此序列不合法!

所以f(n)=C(2n,n)-C(2n,n+1)

此題的結果為:(C(16,8)-C(16,9))*8!*8!(前後兩個8是,5元,10元人的全排列)

卡特蘭數的另類遞推公式:

h(n)=h(n-1)*(4*n-2)/h(n-1)

h(n)=C(2n,n)/(n+1);