简单搜索,这不是乱搜。
#include<bits/stdc++.h>
using namespace std;
char a[510][510];
bool vis[510][510];
int dir[4][2]={1,0,-1,0,0,1,0,-1};
bool f=false;
int n,m;
void dfs(int r,int c)
{
if(r<0 || r>n-1 || c<0 ||c>m-1) return;
if(vis[r][c] || a[r][c]=='#') return;
if(a[r][c]=='E') f=true;
vis[r][c]=true;
for(int i=0;i<4;i++)
{
int dr=dir[i][0];
int dc=dir[i][1];
dfs(r+dr,c+dc);
}
}
int main()
{
int x,y;
while(~scanf("%d%d",&n,&m))
{
f=false;
for(int i=0;i<n;i++)
{
scanf("%s",&a[i]);
}
memset(vis,0,sizeof(vis));
bool flag=false;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]=='S')
{
x=i;y=j;
}
}
}
dfs(x,y);
if(f) printf("Yes\n");
else printf("No\n");
}
return 0;
}谢谢阅读!
祝你学习愉快!



京公网安备 11010502036488号