4.8.9RE 70分
查看原帖
4.8.9RE 70分
357131
gosgosgoy楼主2022/10/3 11:18
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int dx[9]={0,-2,-1,1,2,2,1,-2,-1};
int dy[9]={0,1,2,2,1,-1,-2,-1,-2};
int xi[5001],yi[5001];
queue<int> q;
int book[5001][5011];
int maps[5001][5001];
int n,m,x,y;
int main(){
	scanf("%d%d%d%d",&n,&m,&x,&y);
	memset(maps,127,sizeof(maps));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			book[i][j]=-1;
	q.push(1);
	xi[q.size() ]=x;
	yi[q.size() ]=y;
	int a,b,k;
		book[x][y]=0;
		maps[x][y]=0;
		int t=1;
	while(q.size() >0){
		k=q.front() ;
		q.pop() ;
		a=xi[k];
		b=yi[k];
		for(int i=1;i<=8;i++){
			if(book[a+dx[i]][b+dy[i]]==-1&&a+dx[i]>0&&a+dx[i]<=n&&b+dy[i]>0&&b+dy[i]<=m){
				t=t+1;
				q.push(t);
				xi[t]=a+dx[i];
				yi[t]=b+dy[i];
				book[a+dx[i]][b+dy[i]]=1;
				maps[a+dx[i]][b+dy[i]] =maps[a][b]+1;
			}
	}
	}
	for(int i=1;i<=n;i++){
	 for(int j=1;j<=m;j++){
	 	if(maps[i][j]>1000001)maps[i][j]=-1;
	 	printf("%d    ",maps[i][j]);
		 
		}
	 	printf("\n");
		 }
	return 0;
}//
2022/10/3 11:18
加载中...