#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,m,qx[100000],f=0,r=0;
int qy[100000];
int a[500][500];
int dx[8]={-1,-2,-2,-1,1,2,2,1};
int dy[8]={2,1,-1,-2,2,1,-1,-2};
void bfs(){
while(f!=r){
int x,y;
for(int i1=0;i1<8;i1++){
x=qx[f]+dx[i1],y=qy[f]+dy[i1];
if(x>=0&&x<n&&y>=0&&y<m&&a[x][y]==-1){
a[x][y]=a[qx[f]][qy[f]]+1;
qx[r]=x;
qy[r++]=y;
}
}
f++;
}
}
int main()
{
int i,j,sx,sy;
cin>>n>>m>>sx>>sy;
sx=sx-1;
sy=sy-1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=-1;
a[sx][sy]=0;
qx[r]=sx;
qy[r]=sy;
r=1;
bfs();
for( i=0;i<n;i++){
for( j=0;j<m;j++)
cout<<left<<setw(5)<<a[i][j];
cout<<endl;
}
return 0;
}
思路记录:简单的bfs,原本我以为十分钟AC,找bug找了好久,给地图标记的时候出了问题,以后还是得注意点阿!!!!!!!!!!!!!!!