Catalan數應用整理

2022-07-15 04:06:10 字數 2159 閱讀 9449

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

乙個有n個結點的二叉樹總共有多少種形態

輸入描述 input description

讀入乙個正整數n

輸出描述 output description

輸出乙個正整數表示答案

樣例輸入 sample input

樣例輸出 sample output

資料範圍及提示 data size & hint

1<=n<=20

1

#define n 25

2 #include3 #include4

using

namespace

std;

5long

long

f[n];

6int

main()

7

下面解釋:為什麼n個節點的二叉樹的形態數目是catalan數?

1/*2

先考慮只有乙個節點的情形,設此時的形態有f(1)種,那麼很明顯f(1)=134

如果有兩個節點呢?我們很自然想到,應該在f(1)的基礎上考慮遞推關係。那麼,如果固定乙個節點後,有兩種情況,一是左子樹還剩乙個節點,此刻型別數量為f(1),第二種情況是右子樹生乙個節點,此刻型別數量為f(1),固有f(2) = f(1) + f(1)56

如果有三個節點呢?我們需要考慮固定兩個節點的情況麼?當然不行,為什麼?78

因為當節點數量大於等於2時,無論你如何固定,其形態必然有多種,而在這多種基礎之上你如何安排後續剩下的節點呢?所以必須挑出這個誤區。910

回到二叉樹的定義,二叉樹本質上就是乙個遞迴的形式,左子樹,右子樹,根節點。所以根節點應該不變,需要遞迴處理的是左右子樹。

1112

也就是說,還是考慮固定乙個節點,即根節點。好的,按照這個思路,還剩2個節點,那麼左右子樹的分布情況為2=0+2=1+1=2+0。

1314

所以有3個節點時,遞迴形式為f(3)=f(2) + f(1)*f(1) + f(2). (注意這裡的乘法,因為左右子樹一起組成整棵樹,根據排列組合裡面的乘法原理即可得出)

1516

那麼有n個節點呢?我們固定乙個節點,那麼左右子樹的分布情況為n-1=n-1 + 0 = n-2 + 1 = ... = 1 + n-2 = 0 + n-1

1718

ok。遞迴表示式出來了f(n) = f(n-1) + f(n-2)f(1) + f(n-3)f(2) + ... + f(1)f(n-2) + f(n-1)

1920

2122

觀察一下這個表示式,嗯,和我們之前見過的遞迴表達有一點區別,遞推層級為n的時候,更多的是考慮前一步(n-1),或者前兩步(n-1)和(n-2)。

2324

但是這裡卻考慮到所有的情況,即1到n-1。

2526

最後說明一下,這個表示式有乙個學名,叫做catalan數。上面我們沒有定義f(0)。如果把f(0)也考慮進去,顯然沒有節點也只有一種情況,即f(0)=1

2728

標準表示式為f(n) = f(n-1)f(0) + f(n-2)f(1) + f(n-3)f(2) + ... + f(1)f(n-2) + f(n-1)f(0)

2930

前幾個數為1,1,2,5,14,42,132。

31*/

時間限制: 1 s

空間限制: 32000 kb

題目等級 : ** gold

題解檢視執行結果

在乙個圓上,有2*k個不同的結點,我們以這些點為端點,連k條線段,使得每個結點都恰好用一次。在滿足這些線段將圓分成最少部分的前提下,請計算有多少種連線的方法

輸入描述 input description

僅一行,乙個整數k(1<=k<=30)

輸出描述 output description

兩個用空格隔開的數,後者為最少將圓分成幾塊,前者為在此前提下連線的方案數

樣例輸入 sample input

樣例輸出 sample output

2 3資料範圍及提示 data size & hint

1 #include2

intn;

3long

longf;4

intmain()

5

Catalan數計算及應用

問題描述 卡塔蘭數,是組合數學 中乙個常出現在各種計數問題中出現的數列。輸入乙個整數n,計算h n 其遞迴式如下 h n h 0 h n 1 h 1 h n 2 h n 1 h 0 其中n 2,h 0 h 1 1 該遞推關係的解為 h n c 2n,n n 1 n 1,2,3,思路 直接根據遞迴式,...

Catalan數計算及應用

問題描述 卡塔蘭數,是組合數學 中乙個常出現在各種計數問題中出現的數列。輸入乙個整數n,計算h n 其遞迴式如下 h n h 0 h n 1 h 1 h n 2 h n 1 h 0 其中n 2,h 0 h 1 1 該遞推關係的解為 h n c 2n,n n 1 n 1,2,3,思路 直接根據遞迴式,...

Catalan數計算及應用

問題描述 卡塔蘭數,是組合數學 中乙個常出現在各種計數問題中出現的數列。輸入乙個整數n,計算h n 其遞迴式如下 h n h 0 h n 1 h 1 h n 2 h n 1 h 0 其中n 2,h 0 h 1 1 該遞推關係的解為 h n c 2n,n n 1 n 1,2,3,思路 直接根據遞迴式,...