题意不再赘述,大致解法是用动态规划。
N等于来自于4个方向N-1的解的和
Solution
方案:
class Solution {
public:
int findPaths(int m, int n, int N, int i, int j) {
int dp[51][50][50];
for(int Ni=1;Ni<=N;Ni++){
for (int mi=0;mi<m;mi++){
for(int ni=0;ni<n;ni++){
dp[Ni][mi][ni] = ((long long)(!mi?1:dp[Ni-1][mi-1][ni]) + (mi==m-1?1:dp[Ni-1][mi+1][ni])
+(!ni?1:dp[Ni-1][mi][ni-1]) + (ni==n-1?1:dp[Ni-1][mi][ni+1]))%1000000007;
}
}
}
return dp[N][i][j];
}
};
Tips
需要注意的是:题目中提示数会很大,所以需要long long转化一下,并且是从第一个数开始long long,否则会出现莫名的错误。
利用三目运算符的简洁。