简单搜索,这不是乱搜。
#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; }
谢谢阅读!
祝你学习愉快!