已经到了不看题解无法下手的程度了。我根本想不到这是dp......不过我发现nocow这个东西挺好的上面提供了解题思路说的很详细往往一题给好几种方法,我这题就是根据那上面来的。
/*
ID:jinbo wu
LANG:C++
TASK:nocows
*/
#include<bits/stdc++.h>
using namespace std;
const int mod=9901;
int dp[205][105];
int main()
{
int n,m;
freopen("nocows.in","r",stdin);
freopen("nocows.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=m;i++)
dp[1][i]=1;
for(int i=1;i<=n;i++)
for(int j=2;j<=m;j++)
for(int k=1;k<i-1;k++)
{
dp[i][j]=(dp[i][j]+dp[k][j-1]*dp[i-1-k][j-1])%mod;
}
cout<<(dp[n][m]-dp[n][m-1]+mod)%mod<<endl;
}