求救求救,BFS40分代码
查看原帖
求救求救,BFS40分代码
483837
featherw楼主2021/7/13 15:55
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,k[410],q[410],a[410][410];
int dx[8]={2,-2,2,-2,-1,1,-1,1};
int dy[8]={1,1,-1,-1,2,2,-2,-2};
void bfs()
{
	int head=0,tail=1;
	q[1]=x;
	k[1]=y;
	a[1][1]=0;
	while(head<tail)
	{
		head++;
		int x1=q[head];
		int y1=k[head]; 
		for(int i=0;i<8;i++)
		{
			int nx=x1+dx[i];
			int ny=y1+dy[i];
			if(a[nx][ny]==0&&nx>0&&ny>0&&nx<=n&&ny<=m)
			{
				tail++;
				q[tail]=nx; 
				k[tail]=ny;
				a[nx][ny]=a[x1][y1]+1;
			}
		}
		
	}
}
int main()
{
	cin>>n>>m>>x>>y;
	bfs();
	for(int i=1;i<=n;i++)
	{	
		for(int j=1;j<=m;j++)
			if(a[i][j]==0&&(i!=x||j!=y))
				printf("%-5d",-1);	
			else if(i==x&&j==y)
				printf("%-5d",0);	
			else
				printf("%-5d",a[i][j]);	
		cout<<endl; 
	}	
		
	return 0;
}
2021/7/13 15:55
加载中...