蓝桥集训之迷宫
-
核心思想:dfs
- 走迷宫
-
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N = 110; char g[N][N]; int k,n; int dx[4] = {0,1,0,-1} , dy[4] = {1,0,-1,0}; bool st[N][N]; int x1,y1,x2,y2; bool dfs(int x,int y) { if(g[x][y] == '#') return false; if(x == x2 && y == y2) return true; st[x][y] = true; for(int i=0;i<4;i++) { int a = x + dx[i], b = y + dy[i]; if (a < 0 || a >= n || b < 0 || b >= n) continue; if(st[a][b]) continue; if(dfs(a,b)) return true; } return false; } int main() { cin>>k; while(k--) { cin>>n; for(int i=0;i<n;i++) cin>>g[i]; memset(st, 0, sizeof st); cin>>x1>>y1>>x2>>y2; if(dfs(x1,y1)) puts("YES"); else puts("NO"); } return 0; }