HDU 1023 卡特蘭數 數學

2022-05-09 18:53:23 字數 733 閱讀 4505

題意是求一列連續公升序的數經過乙個棧之後能變成的不同順序的數目。

用乙個二維陣列,a[ i ][ 0 ] 表示第 i 個卡特蘭數的位數,a[ i ][ j ] ( j != 0) 中存第 i 個卡特蘭數從低位到高位的第 j 個數,也就是說數是倒過來存的,輸出時要倒著輸出。

**如下:

1 #include2

int a[105][100];3

void

ktl()420

while

(yu)

2125

for(int j = len; j >= 1; --j)//

第二步:h(n) = h1(n) / (n+1);

2631

while(!a[i][len]) --len;//

去掉前導零

32 a[i][0] =len;33}

34}35int

main()

3645

return0;

46 }

view code

另外,卡特蘭數是很神奇的數,應用廣泛,在 5 元 10 元排隊買票問題,階梯切割問題,n * n方格行走問題,括號匹配問題,數字入棧處理問題等等問題都可應用到卡特蘭數,這些應用的實質感覺是相似的,就是在數量相同的元素 a 和元素 b 組合時,要保證按一定的方向考慮時 a 的個數始終不少於 b 的個數。有關於卡特蘭數,請移步:卡特蘭數性質及應用 、組合數學及其應用——卡特蘭數 。

卡特蘭數(HDU 1023)

卡特蘭數又稱卡塔蘭數,是組合數學中乙個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁 查理 卡塔蘭 1814 1894 命名。卡特蘭數 前幾項為 oeis中的數列a000108 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,74290...

HDU 1023 卡特蘭數打表)

卡特蘭數 h 0 1 h 1 1 n 4 n 2 n 1 h n 1 n 2 其餘遞推式 h n c 2n,n n 1 n 0,1,2,h n c 2n,n c 2n,n 1 n 0,1,2,前幾項為 1,1,2,5,14,42,132,429,1430,4862,16796,58786,20801...

卡特蘭數學習

今天這個子任務不會做qwq 正解是卡特蘭數。卡特蘭數 定義 h0 1,h1 1。遞推關係式 hn n 1i 0 hi h n i 1 通項公式 hn n2 n n 1 或 h n n 2n n 1 2n 應用在乙個凸多邊形中,通過若干條互不相交的對角線,把這個多邊形劃分成了若干個三角形。任務是鍵盤上...