求求大佬帮帮萌新吧
查看原帖
求求大佬帮帮萌新吧
742305
du1wu2debenben楼主2022/9/13 14:36

大家说不能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;
}
2022/9/13 14:36
加载中...