由於最近怒刷筆試題遇到了很多關於卡特蘭數列的問題於是寫這篇文章,算是做個筆記吧。
1卡特蘭數列的定義:
是組合數學中乙個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)命名。
2卡特蘭樹列的前幾項:
1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796。
3卡特蘭數列的推導公式:
令h(0)=1,h(1)=1,catalan數滿足遞推式[1] :
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2)
例如:h(2)=h(0)*h(1)+h(1)*h(0)
h(0) = 1;
h(2-1) = h(1) = 1;
h(1) = 1;
所以:h(2)=1*1+1*1=2
h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5
另類遞推式[2] :
h(n)=h(n-1)*(4*n-2)/(n+1);
遞推關係的解為:
h(n)=c(2n,n)/(n+1) (n=0,1,2,…)
遞推關係的另類解為:
h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,…)
4卡特蘭數列的應用:
1矩陣連乘: p=a1×a2×a3×……×an,依據乘法結合律,不改變順序,只用括號表示成對的乘積,試問有幾種括號化的方案?
(h(n-1)種)
2乙個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?
h(n+1)
3 買票找零
有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧
4凸多邊形三角劃分
在乙個凸多邊形中,通過若干條互不相交的對角線,把這個多邊形劃分成了若干個三角形。任務是鍵盤上輸入凸多邊形的邊數n,求不同劃分的方案數f(n)。比如當n=6時,f(6)=14。
f(n) = h(n-2);
5 一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?
6在圓上選擇2n個點,將這些點成對連線起來使得所得到的n條線段不相交的方法數?
7給定n個節點,能構成多少種不同的二叉樹?[7]
(能構成h(n)個)
(這個公式的下標是從h(0)=1開始的)
要注意平衡二叉樹的節點增加數量是乙個斐波那契數列 不要混淆。
void catalan() //求卡特蘭數
while(carry) //進製處理
carry = 0;
for(j = len-1; j >= 0; j–) //除法
while(!a[i][len-1]) //高位零處理
len –;
b[i] = len; } }
卡特蘭數列(Catalan)
卡特蘭數列是組合數學中乙個常出現在各種計數問題 現的數列,其前幾項為 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,卡特蘭數首先是由尤拉在計算對凸 n 邊形的不同的對角三角形剖分的個數問題時得到的,即在乙個凸 n 邊形中,通過不相交於 n 邊形...
卡特蘭數列 Catalan
卡特蘭數列 catalan 簡述卡特蘭數又稱卡塔蘭數,它是組合數學中乙個常出現在各種計數問題 現的數列,其前幾項為 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,公式1.遞迴公式1 2.遞迴公式2 3.組合公式1 4.組合公式2 5.增長趨勢 ...
卡特蘭數列程式設計實現
卡特蘭 catalan 數列典型特徵有一類如下 1.可以分為兩列 2.每行從左向右依次遞增 減 每列從上向下依次遞增 減 2 10 標準二維表問題 問題為 設n是乙個正整數。2 n的標準二維表是由正整數1,2,2n組成的2 n陣列,該陣列的每行從左到右遞增,每列從上到下遞增。把數字從小到大進行排序,...