這個是乙個卡特蘭數的板子題
遞推式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行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給...