#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define aa first
#define bb second
int dx[8]={2,2,1,1,-1,-1,-2,-2};
int dy[8]={1,-1,2,-2,2,-2,1,-1};//定义方向,几维度用多大的数组对应几个方向,搜索方向,简化代码量
int n,m,x,y;
int mp[500][500];
void bfs()
{
mp[x][y]=0;
queue<pii> q;
q.push(make_pair(x,y));
while(!q.empty())
{
pii now=q.front();
q.pop();
for(int i=0;i<8;++i)
{
pii new1=make_pair(now.aa+dx[i],dy[i]+now.bb);
if(new1.aa>=1&&new1.aa<=n&&new1.bb>=1&&new1.bb<=m&&mp[new1.aa][new1.bb]==-1)
{
mp[new1.aa][new1.bb]=mp[now.aa][now.bb]+1;
q.push(new1);
}
}
}
return ;
}
int main ()
{
cin>>n>>m;
cin>>x>>y;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
mp[i][j]=-1;
bfs();
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
printf("%-5d",mp[i][j]);//宽距不能用空格代替
if(i<n)
cout<<endl;
}
return 0;
}
bfs减代码量)宽距
最新推荐文章于 2024-11-02 20:20:37 发布