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

2021-10-04 09:16:05 字數 2547 閱讀 6867

這個是乙個卡特蘭數的板子題

遞推式1:

遞推式2:

卡特蘭數,其前幾項為 : 1, 2, 5, 14, 42, 132, 429…

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;int f[

100]

;int

main()

} cout<

<

return0;

}//2f[0

]=f[1]

=1;scanf

("%d"

,&n)

;for

(int i=

2;i<=n;i++

)printf

("%lld"

,f[n]

);

記憶化搜尋

f[i][j],i為沒有排過的數,j為棧內數

當i=0時,函式返回1

當j=0時,棧為空,不能彈出數,只能進去乙個,f[i][j]只能為f[i-1][j+1]

當棧不為空的時候,可以彈出乙個,或者進棧乙個,f[i][j]=f[i-1][j+1]+f[i][j-1]

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;int f[

300]

[300];

intcal

(int x,

int y)

intmain()

dp[i][j],i為進棧的總數,j為出棧的數

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

#define int long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;int dp[

300]

[300];

//進去棧總數,出棧數

signed

main()

for(

int i=

1;i<=n;i++)}

cout<

[n]<

return0;

}

出棧 記憶搜尋 卡特蘭數

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 1...

卡特蘭數 不同的二叉搜尋樹

卡特蘭數是組合數學中乙個常出現在各種計數問題 現的數列。其公式為 c n c 2 c n 1 c 3 c n 2 c n 1 c 2 假設n個節點存在 即有 g n f 1 f 2 f 3 f 4 f n n為根節點,當i為根節點時,其左子樹節點個數為 1,2,3,i 1 右子樹節點個數為 i 1,...

記憶化搜尋入門 數塔

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給...