大家说不能dfs,然而我的代码没有TLE,第三个点WA了
昨天学的DFS,好困难呀...
第二次求助,担心没有人理会(害羞)
#include <iostream>
using namespace std;
char map[31][31][31];
int vis[31][31][31]={0};
int x,y,z,result=9999;
int Sx,Sy,Sz;
int Ex,Ey,Ez;
int fx[]={-1,1,0,0,0,0};
int fy[]={0,0,-1,1,0,0};
int fz[]={0,0,0,0,-1,1};
void DFS(int tx,int ty,int tz,int tim){
vis[tx][ty][tz]=1;
if(tx==Ex&&ty==Ey&&tz==Ez){
if(result>tim) result=tim;
return;
}
for (int i=0; i<6; i++) {
if(tx+fx[i]>=1&&tx+fx[i]<=x&&ty+fy[i]>=1&&ty+fy[i]<=y&&tz+fz[i]>=1&&tz+fz[i]<=z&&map[tx+fx[i]][ty+fy[i]][tz+fz[i]]!='#'&&vis[tx+fx[i]][ty+fy[i]][tz+fz[i]]==0){
tim++;
DFS(tx+fx[i],ty+fy[i],tz+fz[i],tim);
tim--;
}
}
}
int main() {
cin>>x>>y>>z;
for (int i=1; i<=x; i++) {
for (int j=1; j<=y; j++) {
for (int k=1; k<=z; k++) {
cin>>map[i][j][k];
if(map[i][j][k]=='S'){Sx=i;Sy=j;Sz=k;}
if(map[i][j][k]=='E'){Ex=i;Ey=j;Ez=k;}
}
}
}
DFS(Sx,Sy,Sz,0);
if(result!=9999) cout<<"Escaped in "<<result<<" minute(s)."<<endl;
else cout<<"Trapped!"<<endl;
return 0;
}