社区讨论

求助,悬2关

P1443马的遍历参与者 5已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lo2hn0m3
此快照首次捕获于
2023/10/23 13:59
2 年前
此快照最后确认于
2023/10/23 13:59
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
int mp[500][500]; 
bool vis[500][500];
int dx[8]={-2,2,-2,2,-1,1,-1,1};
int dy[8]={-1,-1,1,1,-2,-2,2,2};
struct node{
	int x;			
	int y;			
	int cnt;		
};
void bfs(){
	queue<node> q;
	node start;
	start.x=x;
	start.y=y;
	start.cnt=0;
	q.push(start);
	vis[x][y]=1;
	while(!q.empty()){
		node now=q.front();
		q.pop();
		for(int i=0;i<8;i++){
			node to;
			to.x=now.x+dx[i];
			to.y=now.y+dx[i];
			to.cnt=now.cnt + 1;
			if(to.x>=1&&to.x<=n&&to.y>=1&&to.y<=m&&!vis[to.x][to.y]){
				mp[to.x][to.y]=to.cnt;	
				vis[to.x][to.y]=1;
				q.push(to);
			}
		} 
	}
}
int main(){
	cin>>n>>m>>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]);
		}
		cout<<endl;
	}
	return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...