爆栈,但不清楚哪里爆栈
查看原帖
爆栈,但不清楚哪里爆栈
1073754
__szh_DNCB__楼主2024/9/28 18:05
#include<bits/stdc++.h>
using namespace std;
bool s[105][105];
int n,m;
int dx[5] = {-1,0,1,0};
int dy[5] = {0,-1,0,1};
bool check(int x,int y){
	if (x <= 0 || x >= n || y <= 0 || y >= m || s[x][y] == false)
		return false;
	return true;
}
string bfs(){
	queue <pair<int,int>> q;
	q.push({1,1});
	while (q.size()){
		pair<int,int> p = q.front();
		q.pop();
		int fi = p.first;
		int se = p.second;
		if (fi == n && se == m)return "Yes";
		if (check(p.first,p.second) == false)continue;
		else{
			for (int i=0;i<4;i++){
				if (check(fi+dx[i],se+dy[i])){
					q.push({fi+dx[i],se+dy[i]});
				}
			}
		}
		if (q.empty())return "No";
	}
	return "No";
}
int main(){
	cin >> n >> m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char c;
			cin >> c;
			if (c == '.')s[i][j] = true;
			else s[i][j] = false;
		}
	}
	cout << bfs();
	return 0;
}

有无大佬指导一下这个bfs为啥死循环

2024/9/28 18:05
加载中...