作业介绍

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
char a[N][N];
int n,qx,qy,zx,zy,v[N][N],m;
int dx[]={-1,-2,-2,-1,1,1,2,2};
int dy[]={-2,-1,1,2,2,-2,-1,1};
struct node{
	int x,y;//dist到起点的最短距离 
};
int dist[N][N];
void BFS(){
	queue<node> q;
	q.push({qx,qy});//
	v[qx][qy]=1;
	dist[qx][qy]=0;
	while(q.size()){//还有点可以扩散 
		//取出队首  惊醒扩散
		node p=q.front();
		q.pop();
		for(int i=0;i<=7;i++){
			int xx=p.x+dx[i];
			int yy=p.y+dy[i];
			if(xx>=1&&xx<=n &&yy>=1&&yy<=m &&v[xx][yy]==0){
				q.push({xx,yy});
				dist[xx][yy]=dist[p.x][p.y]+1;
				v[xx][yy]=1;
			}
		} 
	}
} 
int main(){
	cin>>n>>m;
	cin>>qx>>qy;
	memset(dist,-1,sizeof dist);
	BFS();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<left<<setw(5)<<dist[i][j];
		}
		cout<<endl;
	}
	return 0; 
}

状态
已结束
题目
2
开始时间
2025-3-22 0:00
截止时间
2025-3-31 23:59
可延期
24 小时