记忆化搜索,别的不多说:
代码如下:
#include"stdio.h" #include"string.h" int dis[150][150],count[150][150],vis[150][150]; int n,m; int dfs(int x,int y) { int i,j,ans=0; if(x==n&&y==m) return 1; if(vis[x][y]!=0) return count[x][y]; for(i=0;i<=dis[x][y]&&i<=n;i++) { for(j=0;j<=dis[x][y]-i&&j<=m;j++) { if(i==0&&j==0) continue; ans=(ans+dfs(x+i,y+j))%10000; } } vis[x][y]=1; return count[x][y]=ans; } int main( ) { int i,j,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&dis[i][j]); printf("%d\n",dfs(1,1)); } return 0; }