简单搜索题
#include <cstdio> #include <iostream> #include <cstring> using namespace std; char c[1005][1005]; int n,m; bool vis[1005][1005]; int dx[4]={0,0,-1,1}; int dy[4]={1,-1,0,0}; void dfs(int i,int j) { if(i<0||j<0||i==n||j==m||vis[i][j]||c[i][j]=='#') return ; vis[i][j]=1; for(int k=0;k<4;k++) dfs(i+dx[k],j+dy[k]); } int main() { while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<n;i++) scanf("%s",c[i]); memset(vis,0,sizeof(vis)); int sx=-1,sy,ex,ey; for(int i=0;i<n;i++) for(int j=0;j<m;j=j+(m-1)) { if((c[i][j]=='*')&&(sx==-1)) { sx=i;sy=j; } else if(c[i][j]=='*') { ex=i;ey=j; } } for(int i=0;i<n;i=i+(n-1)) for(int j=0;j<m;j++) { if((c[i][j]=='*')&&(sx==-1)) { sx=i;sy=j; } else if(c[i][j]=='*') { ex=i;ey=j; } } dfs(sx,sy); if(vis[ex][ey]) puts("YES"); else puts("NO"); } return 0; }