就一正常动规,为什么有问题啊,我真的 自己造的数据全过了,样例也过了,然而wa了3,4两个点
#include<iostream>
using namespace std;
int main(){
int x,y,x1,y1;
cin>>x>>y>>x1>>y1;
int a[x+1][y+1]={};
int vis[x+1][y+1]={};
vis[x1][y1]=1;
if(x1+1>=0&&y1+2>=0&&x1+1<=x&&y1+2<=y)
vis[x1+1][y1+2]=1;
if(x1+2>=0&&y1+1>=0&&x1+2<=x&&y1+1<=y)
vis[x1+2][y1+1]=1;
if(x1-1>=0&&y1+2>=0&&x1-1<=x&&y1+2<=y)
vis[x1-1][y1+2]=1;
if(x1-1>=0&&y1-2>=0&&x1-1<=x&&y1-2<=y)
vis[x1-1][y1-2]=1;
if(x1+1>=0&&y1-2>=0&&x1+1<=x&&y1-2<=y)
vis[x1+1][y1-2]=1;
if(x1+2>=0&&y1-1>=0&&x1+2<=x&&y1-1<=y)
vis[x1+2][y1-1]=1;
if(x1-2>=0&&y1+1>=0&&x1-2<=x&&y1+1<=y)
vis[x1-2][y1+1]=1;
if(x1-2>=0&&y1-1>=0&&x1-2<=x&&y1-1<=y)
vis[x1-2][y1-1]=1;
a[0][0]=1;
/**for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
cout<<vis[i][j]<<" ";
}
cout<<'\n';
}*/
for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
if(vis[i][j]==0){
if(i>0){
a[i][j]+=a[i-1][j];
}
if(j>0){
a[i][j]+=a[i][j-1];
}
}
}
}
/*for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
cout<<vis[i][j]<<" ";
}
cout<<'\n';
}*/
cout<<a[x][y];
return 0;
}