输入样例:
2
3
.##
..#
#..
0 0 2 2
5
.....
###.#
..#..
###..
...#.
0 0 4 0
输出样例:
YES
NO
#include<bits/stdc++.h>
using namespace std;
char c[110][110];
bool book[110][110];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1};
int n,m,sx,sy,ex,ey;
bool dfs(int x,int y)
{
if(x<0||x>=n||y>=n||y<0||book[x][y]||c[x][y]=='#')
return false;//越界,障碍物,走过直接结束
if(x==ex&&y==ey)//结束
{
return true;
}
book[x][y]=true;//标记目前这个点已经走过了
//枚举四个方向
for(int i=0;i<4;i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if(dfs(nx,ny))
return true;
}
return false;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>c[i];
}
cin>>sx>>sy>>ex>>ey;
if(c[sx][sy]=='#'||c[ex][ey]=='#')//剪枝
{
cout<<"NO"<<endl;
continue;
}
if(dfs(sx,sy))
{
cout<<"YES"<<endl;
}
else
cout<<"NO"<<endl;
}
return 0;
}