#在线求助
  • 板块P1443 马的遍历
  • 楼主PBzero
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/2/11 18:45
  • 上次更新2023/10/24 01:06:06
查看原帖
#在线求助
905265
PBzero楼主2023/2/11 18:45

#include<bits/stdc++.h>
using namespace std;
const int N=410;

int a[N][N];
int ans[N][N];

typedef pair<int,int> PII;
PII q[N*N];

int n,m,sx,sy;

int dx[8]={-2,-2,2,2,1,-1,1,-1};
int dy[8]={-1,1,-1,1,2,-2,-2,2};
int main()
{
	cin>>n>>m>>sx>>sy;
	q[0]={sx,sy};
	
	memset(ans,-1,sizeof ans);
	
	ans[sx][sy]=0;
	a[sx][sy]=1;
	
	int hh=0,tt=0;
    while(hh<=tt)
    {
    	auto t=q[++hh];
    	
    	for(int i=0;i<8;i++)
    	{
    		int x=t.first+dx[i];
		    int y=t.second+dy[i];
    		if(x>0&&x<=n&&y>0&&y<=m&&a[x][y]==0)
    		{
    			ans[x][y]=ans[t.first][t.second]+1;
    			a[x][y]=1;
    			q[++tt]={x,y};
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		cout<<ans[i][j]<<' ';
		
		puts("");
	}	
		return 0;
}
2023/2/11 18:45
加载中...