明明我的样例过了,下下来的数据也过了,为毛评测就WA声一片
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,a,b,t[512][512];
void dfs(int x,int y,int z)
{
if(z>200)
{
return;
}
if(t[x][y]==-1)
{
t[x][y]=z;
}
else
{
t[x][y]=min(t[x][y],z);
}
if(y+1<=m&&x+2<=n&&(t[x+2][y+1]==-1||t[x+2][y+1]>z+1)) dfs(x+2,y+1,z+1);
if(y-1>0&&x+2<=n&&(t[x+2][y-1]==-1||t[x+2][y-1]>z+1)) dfs(x+2,y-1,z+1);
if(y+2<=m&&x+1<=n&&(t[x+1][y+2]==-1||t[x+1][y+2]>z+1)) dfs(x+1,y+2,z+1);
if(y+2<=m&&x-1>0&&(t[x-1][y+2]==-1||t[x-1][y+2]>z+1)) dfs(x-1,y+2,z+1);
if(y-1>0&&x-2>0&&(t[x-2][y-1]==-1||t[x-2][y-1]>z+1)) dfs(x-2,y-1,z+1);
if(y+1<=m&&x-2>0&&(t[x-2][y+1]==-1||t[x-2][y+1]>z+1)) dfs(x-2,y+1,z+1);
if(y-2>0&&x+1<=n&&(t[x+1][y-2]==-1||t[x+1][y-2]>z+1)) dfs(x+1,y-2,z+1);
if(y-2>0&&x-1>0&&(t[x-1][y-2]==-1||t[x-1][y-2]>z+1)) dfs(x-1,y-2,z+1);
return;
}
int main()
{
cin>>n>>m>>a>>b;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
t[i][j]=-1;
}
}
dfs(a,b,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<t[i][j]<<" ";
}
cout<<endl;
}
return 0;
}