链接:Problem - 1978 (hdu.edu.cn)
问题描述:
问题分析:
这也是dp+搜索的题目,可以使用dfs记忆化。
代码实现:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int dp[105][105];
int ans[105][105];
int t,n,m;
int dfs(int x,int y)
{
if(ans[x][y]>=0)
return ans[x][y];
ans[x][y]=0;
for(int i=0;i<=dp[x][y];i++)
for(int j=0;j<=dp[x][y]-i;j++)
if(x+i>=1&&x+i<=n&&y+j<=m&&y+j>=1)
ans[x][y]=(dfs(x+i,y+j)+ans[x][y])%10000;
return ans[x][y];
}
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
memset(ans,-1,sizeof(ans));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>dp[i][j];
ans[n][m]=1;
cout<<dfs(1,1)<<endl;
}
return 0;
}