Catalan數(卡特蘭數)

因爲Catalan數常常會在算法題或面試題中出現,在這裏作一下小小的總結。 html

介紹

Catalan數是組合數學中一個常在各類計數問題中出現的數列。通常項公式爲  面試

Cn的另外一個表達形式爲 算法

通常來說,咱們編程時用遞推關係會更方便計算: 編程

spa

即:C(n) = C(1)*C(n-1) + C(2)*C(n-2) + … + C(n-1)C(1). .net

它的前幾項爲: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796。能夠先經過前幾項判斷問題是否屬於卡特蘭數。 htm


典型應用

這裏有一本書介紹了66個相異的可由卡塔蘭數表達的組合結構。  http://www-math.mit.edu/~rstan/ec/catadd.pdf (英文PDF)

1 括號化問題。矩陣鏈乘: P=A1×A2×A3×……×An,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案? blog

2 一個有n個X和n個Y組成的字串,且全部的部分字串皆知足X的個數大於等於Y的個數。如下爲長度爲6的dyck words:
XXXYYY     XYXXYY    XYXYXY    XXYYXY    XXYXYY
3 將上例的X換成左括號,Y換成右括號,Cn表示全部包含n組括號的合法運算式的個數(面試題參看算法篇第7題):
((()))     ()(())      ()()()      (())()      (()()) get


4 將多邊行劃分爲三角形問題。將一個凸多邊形區域分紅三角形區域(劃分線不交叉)的方法數? 數學

5 在圓上選擇2n個點,將這些點成對鏈接起來使得所獲得的n條線段不相交的方法數?

6 出棧次序問題。一個棧(無窮大)的進棧序列爲一、二、三、…、n,有多少個不一樣的出棧序列?


7 有2n我的排成一行進入劇場。入場費5元。其中只有n我的有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視做將5元入棧,持10元者到達視做使棧中某5元出棧)

8 在n*n的格子中,只在下三角行走,每次橫或豎走一格,有多少中走法?

9 一個有n個1和n個-1組成的字串,且前k個數的和均不小於0,那這種字串的總數爲多少?

10 給頂節點組成二叉樹的問題。
給定N個節點,能構成多少種形狀不一樣的二叉樹?
(必定是二叉樹!先取一個點做爲頂點,而後左邊依次能夠取0至N-1個相對應的,右邊是N-1到0個,兩兩配對相乘,就是h(0)*h(n-1) + h(2)*h(n-2) + …… + h(n-1)h(0)=h(n))   (能構成h(N)個)

11 有n+1個葉子的滿二叉樹的個數?


12 用n個長方形填充一個高度爲n的階梯狀圖形的方法個數?

13 12個高矮不一樣的人,排成兩排,每排必須是從矮到高排列,並且第二排比對應的第一排的人高,問排列方式有多少種?




就如看到1 1 2 3 5...這樣的數列咱們就會想到斐波那契數列同樣

在面試筆試中,看到1 1 2 5 14 42...咱們也應該要想到卡特蘭數


Reference:


1. http://www.acmerblog.com/catalan-5196.html

2. http://blog.sina.com.cn/s/blog_7064e7850100y1xf.html

相關文章
相關標籤/搜索