20分真香
查看原帖
20分真香
372653
yaozhijiandeyeye楼主2020/12/13 12:07
#include<bits/stdc++.h>
using namespace std;
int dir[8][2]={{1,2},{1,-2},{2,1},{2,-1},{-1,2},{-1,-2},{-2,1},{-2,-1}};
struct node{
	int x,y,step;
	node(int xx,int yy,int dep){
		x=xx;
		y=yy;
		step=dep;
	}
};
int main()
{
	int Map[401][401],n,m,sx,sy,vis[401][401];
	memset(Map,0x7f,sizeof(Map));
	memset(vis,0,sizeof(vis));
	scanf("%d %d %d %d",&n,&m,&sx,&sy);
	queue<node> q;
	vis[sx][sy]=1;
	Map[sx][sy]=0;
	q.push(node(sx,sy,0));
	while(!q.empty())
	{
		node now=q.front();
		q.pop();
		for(int i=0;i<8;i++)
		{
			int tx=now.x+dir[i][0],ty=now.y+dir[i][1];
			if(vis[tx][ty]||tx<=0||tx>n||ty<=0||ty>m)
			{
				continue;
			}
			else
			{
				Map[tx][ty]=min(now.step+1,Map[tx][ty]);
				//Map[tx][ty]=now.step+1;
				vis[tx][ty]=1;
				
				q.push(node(tx,ty,now.step+1));
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(!vis[i][j])
			{
				cout<<"-1    ";//.
				continue;
			}
			else
			{
				cout<<Map[i][j]<<"    ";
			}
		}
		cout<<"\n";
	}
}
2020/12/13 12:07
加载中...