本题是经典的最短路,正解明显是BFS
但!是!
这题用DFS也能做(但会T掉)废话
TLE属于正常现象,但为啥WA了
这让很蒟的我搞不懂
代码哪里错了?
TLE的DFS:
#include<bits/stdc++.h>
using namespace std;
const int dx[]={0,1,0,-1,0},dy[]={0,0,1,0,1};
int n,a1,b1,a2,b2,f[1003][1003];
char str[1003][1003];
void dfs(int x,int y,int step){
f[x][y]=step;
for(int i=1;i<=4;i++){
int _x=x+dx[i],_y=y+dy[i];
if(_x>=1&&_x<=n&&_y>=1&&_y<=n&&str[_x][_y]!='1'&&(step+1<f[_x][_y]||f[_x][_y]==0))
dfs(_x,_y,step+1);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
scanf("%s",str[i]+1);
cin>>a1>>a2>>b1>>b2;
dfs(a1,a2,0);
cout<<f[b1][b2];
return 0;
}
不要和我说为什么TLE,我问的是为啥WA