0
已解决
潘孝宇
初级光能
初级光能
TLE:70
代码:
#include<bits/stdc++.h>
using namespace std;
int k,n,a,b,c,d,dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
bool m[102][102],v[102][102],flag;
char t;
void dfs(int x,int y){
if(x==c && y==d){
flag=true;
return;
}
for(int i=0;i<4;i++){
int dx=x+dir[i][0],dy=y+dir[i][1];
if(!m[dx][dy] && !v[dx][dy] && dx>=1 && dx<=n && dy>=1 && dy<=n){
v[dx][dy]=1; //标记状态
dfs(dx,dy); //递归搜索
v[dx][dy]=0; //状态恢复
}
}
}
int main(){
cin>>k;
while(k--){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>t;
if(t=='s')m[i][j]=false; //可以走
else m[i][j]=true; //不可以走
}
}cin>>a>>b>>c>>d;
if(m[a][b]||m[c][d])cout<<"NO";
else{
v[a][b]=true;
dfs(a,b);
if(flag)cout<<"YES";
else cout<<"NO";
flag=false;
}
cout<<endl;
}return 0;
}
求如何优化!
大佬快来 谢谢