蒟蒻实在太傻,只能写个C题题解呜呜呜~
这个题很明显是个动态规划,经典跳马问题。。
用f数组记录方案数。
所以蒟蒻不多解释啦,直接上代码:
int f[1002][1002];
bool can[1002][1002];
const int M=1000000007;
class Solution {
public:
/**
*
* @param n int整型
* @param m int整型
* @param x0 int整型
* @param y0 int整型
* @param x1 int整型
* @param y1 int整型
* @return int整型
*/
inline bool check(int xx,int bjn,int yy,int bjm){
if(xx>0&&xx<=bjn&&yy>0&&yy<=bjm) return true;
return false;
}
int GetNumberOfPath(int n, int m, int x0, int y0, int x1, int y1) {
if(n==1&&m==1) return 0;
memset(can,true,sizeof(can));
for(int i=x0;i<=x1;++i)
for(int j=y0;j<=y1;++j) can[i][j]=false;
f[1][1]=1;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(i+j==2) continue;
if(check(i-1,n,j,m)&&can[i-1][j]) f[i][j]+=f[i-1][j],f[i][j]%=M;
if(check(i,n,j-1,m)&&can[i][j-1]) f[i][j]+=f[i][j-1],f[i][j]%=M;
}
}
return f[n][m];
}
}; PS:不点个赞再走??

京公网安备 11010502036488号