注:经测试崩溃和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";
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;
}
}
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";
return 0;
}