是不是输出有什么问题?数据也对的,为什么就是错了?
#include<bits/stdc++.h>
using namespace std;
int step[401][401],x[10001],y[10001],dx[8]={1,1,2,2,-1,-1,-2,-2},dy[8]={2,-2,-1,1,2,-2,1,-1},n,m,x1,yy1;
bool a[401][401]={0};
void search()
{
int head=1,tail=0;
x[1]=x1;
y[1]=yy1;
int step1[10001]={0};
step[x1][yy1]=0;
a[x1][yy1]=1;
tail++;
while(head<=tail)
{
for(int i=0;i<=7;i++)
{
int xx=x[head]+dx[i];
int yy=y[head]+dy[i];
if(xx<=n&&xx>0&&yy<=m&&yy>0&&a[xx][yy]==0)
{
tail++;
x[tail]=xx;
y[tail]=yy;
a[xx][yy]=1;
step1[tail]=step1[head]+1;
step[xx][yy]=step1[tail];
}
}
head++;
}
}
int main()
{
cin>>n>>m>>x1>>yy1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
step[i][j]=-1;
search();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<step[i][j]<<" ";
cout<<endl;
}
return 0;
}
菜鸡在线等,非常迷惑