C 實現 卡特蘭數列及其應用

2021-07-11 01:20:07 字數 1254 閱讀 7920

/*卡特蘭數列的原理及其應用場景

令h(1)=1,catalan數滿足遞迴式:

h(n)= h(1)*h(n-1) + h(2)*h(n-2) + … + h(n-1)h(1) (其中n>=2)

該遞推關係的解為:h(n)=c(2n-2,n-1)/n (n=1,2,3,…)

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, …

1.括號化問題。

矩陣鏈乘: p=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?(h(n)種)

2.出棧次序問題。

乙個棧(無窮大)的進棧序列為1,2,3,..n,有多少個不同的出棧序列?

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

3.將多邊行劃分為三角形問題。

將乙個凸多邊形區域分成三角形區域的方法數?

類似:一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果他

從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?

類似:在圓上選擇2n個點,將這些點成對連線起來使得所得到的n條線段不相交的方法數?

*/ //具體**實現如下:

#include 

using

namespace

std;

//卡特蘭數列原理及應用

int catalan(int n)

return res;

}//測試函式

int main()

return

0;}

卡特蘭數列

由於最近怒刷筆試題遇到了很多關於卡特蘭數列的問題於是寫這篇文章,算是做個筆記吧。1卡特蘭數列的定義 是組合數學中乙個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁 查理 卡塔蘭 1814 1894 命名。2卡特蘭樹列的前幾項 1,2,5,14,42,132,429,1430,4862,16...

卡特蘭數及其應用總結

優秀blog 優秀blog 定義 卡特蘭數是組合數學中乙個常出現在各種計數問題中的數列。給定n個0,n個1,排成2n的序列,滿足 任意字首中0的個數大於等於1的個數的排列方式種數,即為卡特蘭數。其前幾項為 從第零項開始 1,1,2,5,14,42,132,429,1430,4862,16796 遞推...

卡特蘭數列程式設計實現

卡特蘭 catalan 數列典型特徵有一類如下 1.可以分為兩列 2.每行從左向右依次遞增 減 每列從上向下依次遞增 減 2 10 標準二維表問題 問題為 設n是乙個正整數。2 n的標準二維表是由正整數1,2,2n組成的2 n陣列,該陣列的每行從左到右遞增,每列從上到下遞增。把數字從小到大進行排序,...