题目链接:https://www.luogu.com.cn/problem/P1443
题记:注意最后输出的格式…
#include<bits/stdc++.h>
using namespace std;
int dir[8][2]={{-2,1},{2,1},{1,2},{1,-2},{2,-1},{-1,-2},{-2,-1},{-1,2}};
int a[405][405];
int n,m,ax,ay;
struct node{
int x,y;
int num;
};
void bfs(int dx,int dy){
queue<node>q;
node start,next;
start.x=dx;
start.y=dy;
start.num=0;
q.push(start);
while(!q.empty()){
start=q.front();
q.pop();
for(int i=0;i<8;i++){
next.x=start.x+dir[i][0];
next.y=start.y+dir[i][1];
if(next.x>0&&next.y>0&&next.x<=n&&next.y<=m&&a[next.x][next.y]==0){
a[next.x][next.y]=1;//标记已经走过
next.num=start.num+1;
a[next.x][next.y]=next.num;
q.push(next);
}
}
}
}
int main(){
cin>>n>>m>>ax>>ay;
bfs(ax,ay);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==ax&&j==ay)
printf("%-5d",0);
else if(a[i][j]==0)
printf("%-5d",-1);
else
printf("%-5d", a[i][j]);
}
cout<<endl;
}
return 0;
}