我已经考虑了可能的边界情况,代码如下,却仍然通不过3,4
#include<iostream>
#include<algorithm>
using namespace std;
const int N=25;
int n,m,x,y;
int f[N][N];
int main(){
cin>>n>>m>>x>>y;
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
//判断步兵不能经过马本身和一步到达的位置,到这些点的路径数我设为了0
if ((i==x-1&&j==y-2) ||(i==x-1&&j==y+2)||(i==x+1 &&j==y-2)||(i==x+1&&j==y+2)||(i==x-2 && j==y-1)||(i==x-2 && j==y+1)||(i==x+2&&j==y-1)||(i==x+2&&j==y+1)||(i==x&&j==y))
{
f[i][j]=0;
}
//判断边界条件
else{
//起点位置
if(i==0&&j==0) f[i][j]=1;
//当在y轴上,只能由左边移动过来
else if(i!=0&&j==0)f[i][j]=f[i-1][j];
//当在x轴上,只能由上边移动过来
else if(j!=0&&i==0)f[i][j]=f[i][j-1];
//其余情况
else f[i][j]=f[i-1][j]+f[i][j-1];
}
}
}
cout<<f[n][m];
return 0;
}
我无法判断我的问题出现在那些地方,数组也不会越界,边界条件也有考虑。 恳请批评帮助,万分感谢