谁能帮我看看
查看原帖
谁能帮我看看
739307
All_Failed_OI_Cici楼主2024/7/16 21:30

对着题解看了半天愣是没发现错哪了

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=410;
int mp[N][N];
bool vis[N][N];
int sx,sy,n,m;
int dx[8]={-2,-1,1,2, 2, 1,-1,-2};
int dy[8]={ 1, 2,2,1,-1,-2,-2,-1};
struct node{
	int x,y;
};
/*
-----------------------------
     |  #  |     |  #  |
-----------------------------
  #  |     |     |     |  #
-----------------------------
     |     |  *  |     |
-----------------------------
  #  |     |     |     |  #
-----------------------------
     |  #  |     |  #  |
-----------------------------
*/
void bfs(){
	queue<node> que;
	que.push({sx,sy});
	mp[sx][sy]=0;
	vis[sx][sy]=true;
	while(!que.empty()){
		for(int i=0;i<8;i++){
			node n1=que.front();
			int xx=n1.x+dx[i]; 
			int yy=n1.y+dy[i]; 
			if(xx>=0&&xx<n&&yy>=0&&yy<m&&!vis[xx][yy]){
				vis[xx][yy]=true;
				mp[xx][yy]=mp[n1.x][n1.y]+1;
				que.push({xx,yy});
			}
		}
		que.pop();
	}
	return;
}
int main(){
	memset(mp,-1,sizeof(mp));
	cin>>n>>m>>sx>>sy;
	mp[sx][sy]=0;
	bfs();
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cout<<setw(5)<<mp[i][j];
		}
		cout<<endl;
	}
	return 0;
}

thx

2024/7/16 21:30
加载中...