Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<string.h>using namespace std;int dp[301][301][602];int n,k;int dodo(int a,int b,int c){if(a<0||b<0||c<0)return 0;if (dp[a][b][c]!=-1) return dp[a][b][c];if(c==0||c<b||c<b+a) {dp[a][b][c]=0;return 0;}//if(b==n) {dp[a][b][c]=dodo(a,b,c-1);return dp[a][b][c];}dp[a][b][c]=0;if(1<=b) dp[a][b][c]+=dodo(a,b-1,c-1);if(c-b<=n){if(c-b-a==b) dp[a][b][c]+=dodo(a-1,b,c-1);else dp[a][b][c]+=dodo(a,b,c-1);}dp[a][b][c]%=1000000007;return dp[a][b][c];}