题目链接:(一本通上的)
http://ybt.ssoier.cn:8088/problem_show.php?pid=1215
我的代码:
#include<iostream>
#include<cstring>
using namespace std;
int a[105][105];
char c;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int k,n;
int x1,y11,x2,y2,f=0,xx,yy;
void dfs(int x,int y){
for(int i=0;i<4;i++){
xx=x+dx[i];
yy=y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&a[xx][yy]==0){
a[xx][yy]=1;
if(xx==x2&&yy==y2){
f=1;
cout<<"YES\n";
return;
} else dfs(xx,yy);
}
}
}
int main(){
cin>>k;
while(k--){
memset(a,0,sizeof(a));
f=0;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c;
if(c=='#') a[i][j]=1;
}
}
cin>>x1>>y11>>x2>>y2;
if(a[x1][y11]||a[x2][y2]){
cout<<"NO\n";
}else{
dfs(x1,y11);
if(f==0) cout<<"NO\n";
}
}
return 0;
}
这好像没问题吧。。。
样例的正常输出是
YES
NO
我是
NO
NO
请大佬帮忙看看,谢谢!