卡特蘭數 codevs 1086 棧

2022-09-17 05:39:08 字數 920 閱讀 1732

2023年noip全國聯賽普及組

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold題解

檢視執行結果

棧是計算機中經典的資料結構,簡單的說,棧就是限制在一端進行插入刪除操作的線性表。

棧有兩種最重要的操作,即pop(從棧頂彈出乙個元素)和push(將乙個元素進棧)。

棧的重要性不言自明,任何一門資料結構的課程都會介紹棧。寧寧同學在複習棧的基本概念時,想到了乙個書上沒有講過的問題,而他自己無法給出答案,所以需要你的幫忙

寧寧考慮的是這樣乙個問題:乙個運算元序列,從1,2,一直到n(圖示為1到3的情況),棧a的深度大於n。

現在可以進行兩種操作,

1.將乙個數,從運算元序列的頭端移到棧的頭端(對應資料結構棧的push操作)

2. 將乙個數,從棧的頭端移到輸出序列的尾端(對應資料結構棧的pop操作)

使用這兩種操作,由乙個運算元序列就可以得到一系列的輸出序列,下圖所示為由1 2 3生成序列2 3 1的過程。(原始狀態如上圖所示) 。

你的程式將對給定的n,計算並輸出由運算元序列1,2,…,n經過操作可能得到的輸出序列的總數。

輸入描述 input description

輸入檔案只含乙個整數n(1≤n≤18)

輸出描述 output description

輸出檔案只有一行,即可能輸出序列的總數目

樣例輸入 sample input

樣例輸出 sample output

1 #include2

long

long f[20];3

using

namespace

std;

4int

main()

514 cout<15return0;

16 }

卡特蘭數,高精度卡特蘭數

簡單介紹 卡特蘭數是組合數學中常常出現的乙個數列。個人認為不管是遞推公式還是代表的含義都比斐波那契數列難理解一些。遞推公式 應用 1.cn表示長度2n的dyck word的個數。dyck word是乙個有n個x和n個y組成的字串。且全部的字首字串皆滿足x的個數大於等於y的個數。下面為長度為6的dyc...

卡特蘭數和超級卡特蘭數

這篇部落格主要是想講一下超級卡特蘭數 大施洛德數 順帶就想講一下卡特蘭數.卡特蘭數記為 c n c 1 1 forall n geq 2,c n sum c i c 前幾項大概是 1,1,2,5,14,42,132.直接遞推未免效率太低,我們考慮用生成函式優化.顯然有 c x c x 2 x 解得 ...

棧和卡特蘭數(Catalan number)

棧是計算機中經典的資料結構,我們也會遇到乙個常見的問題 一共有多少種合法的出棧順序?先說一下什麼是合法的出棧序列,凡是合法序列都遵循以下規律 即對於出棧序列中的每乙個數字,在它後面的 比它小的所有數字,一定是按遞減順序排列的。例如 有數字1 2 3 4 依次入棧,那麼他們的出棧順序中 所以到底有多少...