社区讨论
求助,悬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 条回复,欢迎继续交流。
正在加载回复...