最后一个点wa:14 16 7 5 答案:39217645 我的答案:39217630;求大佬看看问题
#include<bits/stdc++.h>
using namespace std;
int x1,y11,x2,y2,flag=0,flag1=0;
long long a[21][21];
void initial(){ //第0行和第0列初始化为1,马点初始化为-1
// a[x1][y1]=-2;
a[x2][y2]=-1;
if(y2-1>=0)
a[x2+2][y2-1]=-1;
a[x2+2][y2+1]=-1;
if(y2-1>=0&&(x2-2>=0))
a[x2-2][y2-1]=-1;
if(x2-2>=0)
a[x2-2][y2+1]=-1;
if(y2-2>=0)
a[x2+1][y2-2]=-1;
a[x2+1][y2+2]=-1;
if(y2-2>=0&&(x2-1)>=0)
a[x2-1][y2-2]=-1;
if(x2-1>=0)
a[x2-1][y2+2]=-1;
for(int i=1;i<=x1;i++){
if(flag1){ //第0行和第0列遇到-1,则之后都为0
a[0][i]=0;
}else{
if(a[0][i]==-1) {
flag1=1;
a[0][i]=0;
}else
a[0][i]=1;
}
}
for(int i=1;i<=x1;i++){
if(flag){
a[i][0]=0;
}else{
if(a[i][0]==-1) {
flag=1;
a[i][0]=0;
}else
a[i][0]=1;
}
}
}
int main(){
cin>>x1>>y11>>x2>>y2;
initial();
for(int i=1;i<=x1;i++){
for(int j=1;j<=y11;j++){
if(a[i][j]==0){
a[i][j]=a[i-1][j]+a[i][j-1]; //加上左和上的路径数
}else{
a[i][j]=0; //遇到马点 -1改为0
}
}
}
cout<<a[x1][y11];
return 0;