30分蒟蒻求助大佬
查看原帖
30分蒟蒻求助大佬
753646
LCX_201109091514楼主2023/7/10 21:03
#include<bits/stdc++.h>
using namespace std;
int sx,sy,n,m;
int a[401][401] = {-1};
int vis[401][401];
int dx[9] = {1,-1,1,-1,-2,-2,2,2};
int dy[9] = {-2,-2,2,2,1,-1,1,-1};
struct node{
	int x;
	int y;
};
queue <node> q;
void bfs(){
	q.push(node{sx,sy});
	while (!q.empty()){
		for (int i = 0;i < 8;i++){
			int xx = q.front().x+dx[i];
			int yy = q.front().y+dy[i];
			if (xx >= 1 && xx <= n && yy >= 1 && yy <= m && vis[xx][yy] != 1){
				vis[xx][yy] = 1;
				a[xx][yy] = a[q.front().x][q.front().y] + 1;
				q.push(node{xx,yy});
			}
		}
		q.pop();
	}
}
int main(){
	cin>>m>>n>>sx>>sy;
	vis[sx][sy] = 1;
	memset(a,-1,sizeof(a));
	a[sx][sy] = 0;
	bfs();
	for (int i = 1;i <= n;i++){
		for (int j = 1;j <= m;j++){
			printf("%-5d",a[i][j]);
		}
		cout<<endl;
	}
}

2023/7/10 21:03
加载中...