DP問題 注意狀態定義以及轉移方式
#include <iostream>
#include <fstream>
#include <string>
#define MOD 9901
//#define LOCAL
using namespace std;
#ifdef LOCAL
ofstream fout ("out.txt");
ifstream fin ("in.txt");
#else
ofstream fout ("nocows.out");
ifstream fin ("nocows.in");
#endif
int dp[220][110];
int sum[220][110];
int main()
{
int num;
int depth;
fin>>num>>depth;
dp[0][0] = 1;
for (int i = 1; i <= depth; ++i)
{
for (int j = 1; j <= num; ++j)
{
for (int k = 0; k < j; ++k)
{
dp[j][i] = (dp[j][i] + (dp[k][i-1]*sum[j-k-1][i-1])*2)%MOD;
dp[j][i] = (dp[j][i] + dp[k][i-1]*dp[j-k-1][i-1])%MOD;
}
for (int l = 0; l <= i-2; ++l)
{
sum[j][i-1] = (sum[j][i-1]+dp[j][l])%MOD;
}
}
}
fout<<dp[num][depth]<<endl;
return 0;
}