社区讨论

蒟蒻求助

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 条回复,欢迎继续交流。

正在加载回复...