20pt.求助
  • 板块P1443 马的遍历
  • 楼主wyzths
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/5 11:43
  • 上次更新2024/8/5 12:18:34
查看原帖
20pt.求助
1382435
wyzths楼主2024/8/5 11:43
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
struct node {
	int x,y;
};
int dir[8][2] = {{-2,1},{-2-1},{-1,2},{-1,-2},{1,2},{1,-2},{2,-1},{2,1}};
int ans[410][410];
int n,m;
void bfs(int x,int y){
	queue<node> q;
	node tmp = {x,y};
	q.push(tmp);
	ans[x][y] = 0;
	while(q.size()){
		tmp = q.front();
		q.pop();
		for(int i=0;i<8;i++){
			int nx = tmp.x+dir[i][0];
			int ny = tmp.y+dir[i][1];
			if(nx<1||nx>n||ny<1||ny>m||ans[nx][ny]!=-1)
				continue;
			ans[nx][ny] = ans[tmp.x][tmp.y]+1;
			q.push({nx,ny});
		}
	}
}
int main(){
	int sx,sy;
	cin>>n>>m>>sx>>sy;
	memset(ans,-1,sizeof(ans));
	bfs(sx,sy);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
			printf("%-5d",ans[i][j]);
		cout<<endl;
	}
	system("pause");
	return 0;
}
2024/8/5 11:43
加载中...