出棧 記憶搜尋 卡特蘭數

2022-07-15 07:48:08 字數 970 閱讀 8572

1.用dfs來做,記錄以備用

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define mem(a) memset(a,0,sizeof(a))

9using

namespace

std;

10long f[20][20

];11

long dfs(int x,int y) //

x外,y內

122122}

23int

main()

24

view code

2.卡特蘭數

設某位置為k,則比k早進棧且早出棧的有k-1個數,則有h(k-1)種可能,同理比k晚的有h(n-k)方案。 所以

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)=c(2n,n)/(n+1)//k的所有位置的可能性

//如果把陣列定義在main裡面 要初始化

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define mem(a) memset(a,0,sizeof(a))

9using

namespace

std;

10int f[20

];11

intmain()

1221 printf("

%d\n

",f[n]);

22return0;

23 }

view code

卡特蘭數 記憶化搜尋 dp P1044 棧

這個是乙個卡特蘭數的板子題 遞推式1 遞推式2 卡特蘭數,其前幾項為 1,2,5,14,42,132,429 include include include include include include include include include include include include...

1330 出棧序列統計 卡特蘭數

題目描述 按照1,2,n 1,n的順序入棧,問可以得到多少種出棧序列。如n 3時有1 2 3,1 3 2,2 1 3,2 3 1,3 2 1共5種出棧序列。解題思路 設f n 為n個數時的方案數。可知 f 0 1 f 1 1 f 2 2 f 3 5 當n 4時 f1 f2 f3 f4 1 2 3 4...

棧和卡特蘭數(Catalan number)

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