输入
2 3 1 1
输出
0 -1 -1
-1 -1 1
本地输出
0 1 2
1 -1 1
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,w[500][500],head,tail,step;
int a[100000],b[100000],c[100000];
int dir[8][2]{{-2,-1},{-1,-2},{1,2},{2,1},{-2,1},{1,-2},{-1,2},{2,-1}};
int main()
{
scanf("%d%d%d%d",&n,&m,&x,&y);
tail++,a[tail]=x,b[tail]=y;
while(head<=tail)
{
head++;
for(int i=0;i<8;i++)
{
int dx=a[head]+dir[i][0],dy=b[head]+dir[i][1];
if(dx>=1&&dy>=1&&dx<=n&&dy<=m)
{
if(w[dx][dy]==0)
{
// cout<<dx<<" "<<dy<<endl;
tail++,a[tail]=dx,b[tail]=dy,c[tail]=c[head]+1;
w[dx][dy]=c[tail];
}
}
}
}
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(w[i][j]==0) w[i][j]=-1;
w[x][y]=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5d",w[i][j]);
}
printf("\n");
}
return 0;
}
望dalao指导