HDU 1978 How many ways
DP。
题意明显描述不清!
题意从一个点出发,走到某个点只算一种路线......而我把他当成多种来算了.....敲完样例都过不了,然后开始枚举题意了...发现是只当一种算的。
#include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<map> #include<algorithm> using namespace std; const int MOD=10000; const int maxn=100+10; int dp[maxn][maxn]; int a[maxn][maxn]; int n,m; int main() { int T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); memset(dp,0,sizeof dp); dp[1][1]=1; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=1;k<=a[i][j]+1;k++) { for(int s=1;s<=a[i][j]+2-k;s++) { if(k==1&&s==1) continue; if(i+k-1>n) continue; if(j+s-1>m) continue; dp[i+k-1][j+s-1]=(dp[i+k-1][j+s-1]+dp[i][j])%MOD; } } } } printf("%d\n",dp[n][m]); } return 0; }