帮帮我,史瓦罗先生
#include<bits/stdc++.h>
using namespace std;
int dx[8]={-2,-2,-1,-1,2,2,1,1},dy[8]={1,-1,2,-2,1,-1,2,-2};
int a[401][401],i,j,n,m,x,y;
struct node
{
int x1,y2,ans;
};
queue<node>q;
void bfs(int x3,int y3)
{
memset(a,-1,sizeof(a));
a[x3][y3]=0;
int y,t;
q.push((node) {x3,y3,0});
while(!q.empty())
{
node d=q.front();
q.pop();
for(i=0;i<7;i++)
{
y=d.x1+dx[i];
t=d.y2+dy[i];
if(y>=1&&y<=n&&t>=1&&t<=n&&a[y][t]==-1)
{
a[y][t]=d.ans+1;
q.push((node){y,t,d.ans+1});
}
}
}
}
int main()
{
cin>>n>>m>>x>>y;
bfs(x,y);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<left<<setw(5)<<a[i][j];
cout<<endl;
}
return 0;
}