hdu1978(记忆化搜索/DP)

来源:互联网 发布:剑3唐门成男捏脸数据 编辑:程序博客网 时间:2024/04/28 12:19

题目链接:hdu1978

/*记忆化搜索。深搜到终点,回溯时记录到达终点的不同路径数*/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int inf = 0x3f3f3f3f;const int N = 105;const int mod = 10000;int a[N][N],d[N][N],n,m;int dfs(int x, int y){    if(d[x][y]) return d[x][y];    if(x == n && y == m) return 1;//到达终点    int cnt = a[x][y], sum = 0;    for(int i = 0; i <= cnt; i ++)    for(int j = 0; j <= cnt; j ++){        if(i+j > 0 && x+i <= n && y+j <= m && i+j <= cnt)        sum += dfs(x+i, y+j);        sum %= mod;    }    d[x][y] = sum;    return sum;}int main(){    int x,i,j,T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&n,&m);        for(i = 1; i <= n; i ++)            for(j = 1; j <= m; j ++)                scanf("%d",&a[i][j]);        memset(d, 0, sizeof(d));        printf("%d\n", dfs(1,1));    }    return 0;}


0 0