题解
2024-11-30 16:08:25
发布于:广东
3阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct p{
int x,y,step;
p();
p(int a,int b,int c){x=a;y=b;step=c;}
};
int n,m,x,y,mp[401][401],mo[8][2]={{1,-2},{1,2},{-1,2},{-1,-2},{2,-1},{-2,-1},{2,1},{-2,1}};
bool vis[401][401];
int main(){
cin>>n>>m>>x>>y;
queue<p>q;
q.push(p(x,y,0));
vis[x][y]=1;
while(!q.empty()){
p tmp=q.front();
q.pop();
for(int i=0;i<8;++i){
int xx=tmp.x+mo[i][0],yy=tmp.y+mo[i][1];
if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&!vis[xx][yy]){
vis[xx][yy]=1;
mp[xx][yy]=tmp.step+1;
q.push(p(xx,yy,tmp.step+1));
}
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(!vis[i][j])printf("-1 ");
else printf("%d ",mp[i][j]);
}
printf("\n");
}
return 0;
}
这里空空如也
有帮助,赞一个