棧(卡特蘭數模板)

2022-03-14 10:22:31 字數 1157 閱讀 7824

題目背景:

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

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

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

題目描述:

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

現在可以進行兩種操作,

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

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

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

(原始狀態如上圖所示)

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

輸入輸出格式

輸入格式:

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

輸出格式:

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

輸入輸出樣例

輸入樣例#1:

3輸出樣例#1:

5思路:

卡特蘭數

#include

using

namespace

std;

const

int maxn=20;

long

long n,f[maxn];

int main()

卡特蘭數模板

卡特蘭數參考鏈結 裡面有關於其在一些題目的應用 1 前三十項卡特蘭數表 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790,477638700,1767263190,...

卡特蘭數 大數模板

include include include include include include include include include include define n 500010 define inf 10000000 define ll long long define eps 10e...

hdu2067 小兔的棋盤 (卡特蘭數模板題)

傳送門 題意 從左下角走到右上角的不越過對角線的最短路徑的種類數。思路 參見我的那篇卡特蘭數全家桶的部落格。這道題沒說是先往上走再往右還是反過來,所以要輸出h n 2 如下 include include include include include include include include...