RE怎么办?本地也是一样
查看原帖
RE怎么办?本地也是一样
661595
a2lyaXNhbWUgbWFyaXNh楼主2022/7/29 09:50

注:经测试崩溃和exit函数没有关系,我怀疑是访问了负下标

#include<bits/stdc++.h>
using namespace std;
char xq;
bool Map[505][505];
int n,m;
int sx,sy,ex,ey;
void dfs(int x,int y){
	if(x==ex&&y==ey){
		cout<<"Yes\n";//搜到了就输出Yes+结束进程 
		exit(0);
	}
	else{
		Map[x][y]=1;//走过了 
		if(!Map[x+1][y]){
			dfs(x+1,y);
			Map[x+1][y]=0;//回溯 
		}
		else if(!Map[x-1][y]){
			dfs(x-1,y);
			Map[x-1][y]=0;
		}
		else if(!Map[x][y+1]){
			dfs(x,y+1);
			Map[x][y+1]=0;
		}
		else if(!Map[x][y-1]){
			dfs(x,y-1);
			Map[x][y-1]=0;
		}else return;//如果走过了/是墙/越界就return 
	}
}
int main(){
	cin>>n>>m;
	for(int a=0;a<=n+1;a++){
		for(int b=0;b<=m+1;b++){
			if(a>=1&&a<=n&&b>=1&&b<=m){
				cin>>xq;
				if(xq=='s'){
					sx=a;
					sy=b;
				}	
				if(xq=='g'){
					ex=a;
					ey=b;
				}
				if(xq=='#'){
					Map[a][b]=1;
				}
			}else Map[a][b]==1;//输入+围墙,高桥不能走出小区 
		}
	}
	dfs(sx,sy);
	cout<<"No\n";//没搜到就输出No 
	return 0;
} 
2022/7/29 09:50
加载中...