AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){
int T;
int N, M;
int maps[101][101];
int dp[101][101];
cin >> T;
while( T-- ){
cin >> N >> M;
for( int i = 0; i < N; i++ ){
for( int j = 0; j < M; j++ ){
cin >> maps[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++ ){
for( int x = i; x < N; x++ ){
for( int y = j; y < M && ( abs( x - i ) + abs( y - j ) <= maps[i][j] ); y++ ){//注意把这个曼哈顿距离放在这里 不要放在下面 放在下面会超时
if( x == i && y == j ){
continue;
}
dp[x][y] += dp[i][j];
dp[x][y] %= 10000;
}
}
}
}
cout << dp[N-1][M-1] << endl;
}
return 0;
}