社区讨论
蒟蒻求助
P1443马的遍历参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo1ww1oj
- 此快照首次捕获于
- 2023/10/23 04:18 2 年前
- 此快照最后确认于
- 2023/11/03 04:46 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxN=405;
struct nude
{
int x,y,step;
}q[maxN];
int n,m,x,y,f[maxN][maxN],head,tail=1,a[maxN][maxN];
int dx[9]={0,-1,-2,-2,-1,1,2,2,1};
int dy[9]={0,-2,-1,1,2,2,1,-1,-2};
int bfs(int x,int y)
{
q[0].x=x;
q[0].y=y;
while(head<tail)
{
a[x][y]=1;
int x=q[head].x;
int y=q[head].y;
int s=q[head++].step;
for(int i=0; i<8; i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if((nx>0&&nx<n)&&(ny>0&&ny<m)&&a[nx][ny]==0)
{
f[x][y]=f[x][y]==-1?s+1:f[x][y];
q[tail].step=s+1;
q[tail].x=nx;
q[tail++].y=ny;
a[nx][ny]=1;
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>x>>y;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
f[i][j]=-1;
}
}
bfs(x,y);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cout<<f[i][j];
}
cout<<'\n';
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...