代码
#include<bits/stdc++.h>
using namespace std;
bool a[101][101]={0};
char b[101][101]; //存放迷宫
int flag=0; //如果能走出去就标记为1,反之为0
int xx[4]={0-1,0,1},yy[4]={-1,0,1,0};
int n,kx,ky; //n是迷宫的边长,kx是x进行加减之后的值,同理ky。
void dfs(int x,int y){
for(int i=0;i<=3;i++){
kx=x+xx[i];
ky=y+yy[i];
if((b[kx][ky] == '.'||b[kx][ky] == 'e')&&kx>=0&&ky>=0&&kx<n&&ky<n&&a[kx][ky]==0){
a[kx][ky]=1;
if(b[kx][ky] == 'e'){
flag = 1;
}else{
dfs(kx,ky);
}
}
}
}
int main(){
int k=1,sum;
cin>>sum;
while(k<=sum){
memset(a,0,sizeof(a)); //将标记数组a全部记为 0,表示这个点未走过
cin>>n;
for(int i = 0;i<n;i++){
for(int j=0;j<n;j++)
cin>>b[i][j];
}
for(int i = 0;i<n;i++){
for(int j=0;j<n;j++){
if(b[i][j]=='s')
dfs(i,j);
}
}
if(flag==1){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
k++;
}
return 0;
}