为什么才20分
查看原帖
为什么才20分
753132
wanglaiyi楼主2023/7/13 11:31
#include<bits/stdc++.h>
using namespace std;
const int N=405;
queue <pair<int,int> > Q;
int dis[N][N];
const int dx[]= {1,1,-1,-1,2,-2,2,-2};
const int dy[]= {2,-2,2,-2,1,1,-1,-1};
int main() {
	int n,m,x,y;
	scanf("%d%d%d%d",&n,&m,&x,&y);
	memset(dis,-1,sizeof(dis));
	dis[x][y]=0;
	Q.push(make_pair(x,y));
	while(!Q.empty()) {
		pair <int,int> t=Q.front();
		Q.pop();
		x=t.first;
		y=t.second;
		for(int i=0; i<8; i++) {
			int xx=x+dx[i],yy=y+dy[i];
			if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&dis[xx][yy]==-1) {
				dis[xx][yy]=dis[x][y]+1;
				Q.push(make_pair(xx,yy));
			}
		}
	}
	for(int i=1; i<=n; i++,puts(""))
		for(int j=1; j<=n; j++)
			printf("%-5d",dis[i][j]);
	return 0;
}
2023/7/13 11:31
加载中...