求助(必关)
查看原帖
求助(必关)
1032960
Danny_chan楼主2024/2/24 22:40

70分,最后三个点wa,请各位大佬指点一下 代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[2010][2010];
int f[1010][1010];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int x,y;
struct no{
	int x1,y1,s;
};
void bfs(){
	queue<no>q;
	f[x][y]=1;
	q.push({x,y,0});
	while(!q.empty()){
		auto t=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int x2=t.x1+dx[i];
			int y2=t.y1+dy[i];
			if(x2<=0||x2>n||y2<=0||y2>m) continue;
			if(a[x2][y2]=='#') continue;
			if(f[x2][y2]==1) continue;
			f[x2][y2]=1;
			if(a[x2][y2]=='d'){
				cout<<t.s+1;
				exit(0);
			}
			q.push({x2,y2,t.s+1});
		}
	} 
	cout<<"No Way!";
	exit(0);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];		
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]=='m'){
				x=i;
				y=j;
			}		
		}
	}
	bfs();
	return 0;
} 
2024/2/24 22:40
加载中...