题目描述:
这个dp有点特殊,不是从ij开始,而是遍历后得出结果
class Solution {
public int findPaths(int m, int n, int N, int i, int j) {
int dp[][][] = new int[m][n][N + 1];
int [][] dire = {{0,1},{0,-1},{1,0},{-1,0}};
for (int k = 1; k <= N; k++) {
for (int i1 = 0; i1 < m; i1++) {
for (int j1 = 0; j1 < n; j1++) {
for (int l = 0; l < dire.length; l++) {
int[] os = dire[l];
int x = os[0] + i1;
int y = os[1] + j1;
if(x < 0 || x >= m || y < 0 || y >= n){
dp[i1][j1][k] += 1;
}else{
dp[i1][j1][k] = (dp[i1][j1][k] + dp[x][y][k - 1]) % 1000000007;
}
}
}
}
}
return dp[i][j][N];
}
}