GUETOJ - 1119 How many ways(动态规划)

来源:互联网 发布:手机上怎样查淘宝积分 编辑:程序博客网 时间:2024/06/06 03:56

http://acm.guet.edu.cn/problemset/problem/1119


#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAX_N = 101;int N, M, T;int a[MAX_N][MAX_N], dp[MAX_N][MAX_N];bool in(int x, int y){ return x<N && y<M;}void find(int x, int y){for(int i = 0; i <= a[x][y]; i++)for(int j = 0; j <= a[x][y]-i; j++){int nx = x+i, ny = y+j;if(!(i==0&&j==0) && in(nx, ny)){dp[nx][ny] += dp[x][y];dp[nx][ny] %= 10000;}}}int main(){//freopen("in.txt", "r", stdin);scanf("%d", &T);while(T--){scanf("%d%d", &N, &M);for(int i = 0; i < N; i++)for(int j = 0; j < M; j++)scanf("%d", &a[i][j]);memset(dp, 0, sizeof(dp));dp[0][0] = 1;for(int i = 0; i < N; i++)for(int j = 0; j < M; j++)find(i, j);printf("%d\n", dp[N-1][M-1]);}}


0 0