贴一波代码
#include<iomanip>
using namespace std;
const int fx[8][2]={{2,1},{-2,1},{-2,-1},{1,2},{-1,2},{1,-2},{-1,-2}};
struct intt
{
int x,y,bs;
}a[300000];
int n,m,s1,t1,head,tail,map[500][500];
bool vis[500][500];
void bfs()
{
++tail;
a[tail].x=s1;
a[tail].y=t1;
a[tail].bs=0;
vis[s1][t1]=1;
map[s1][t1]=0;
while(head<tail)
{
head++;
for(int i=0;i<8;i++)
{
int xx=a[head].x+fx[i][0];
int yy=a[head].y+fx[i][1];
if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&!vis[xx][yy])
{
a[++tail].x=xx;
a[tail].y=yy;
a[tail].bs=a[head].bs+1;
map[xx][yy]=a[tail].bs;
vis[xx][yy]=1;
}
}
}
}
void out()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
if(vis[i][j]==0)
cout<<-1<<setw(5);
else
cout<<map[i][j]<<setw(5);
cout<<"\n";
}
}
int main()
{
cin>>n>>m>>s1>>t1;
bfs();
out();
}