#include<iostream>
#include<climits>
using namespace std;
int l,r,c;
bool f=false;
long long temp=LONG_MAX;
int stx,sty,stz,exx,exy,exz;
char a[31][31][31];
int dlt[6][3]={{0,0,-1},{0,0,1},{0,-1,0},{0,1,0},{1,0,0},{-1,0,0}};
void add(int x,int y,int z,long long ntemp){
a[z][x][y]='#';
//cout<<z<<"z"<<x<<"x"<<y<<"y"<<ntemp<<"temp"<<endl;
if((x==exx)&&(y==exy)&&(z==exz)){
//cout<<"over"<<endl;
f=true;
temp=min(temp,ntemp);
return;
}
for(int t=0;t<6;t++){
int tx=x+dlt[t][1];
int ty=y+dlt[t][2];
int tz=z+dlt[t][0];
if(tx<0||ty<0||tz<0||tx>=r||ty>=c||tz>=l)continue;
if(a[tz][tx][ty]!='#'){
add(tx,ty,tz,ntemp+1);
}
}
}
int main(){
cin>>l>>r>>c;
for(int i=0;i<l;i++){
for(int j=0;j<r;j++){
for(int k=0;k<c;k++){
cin>>a[i][j][k];
if(a[i][j][k]=='S')stz=i,stx=j,sty=k;
if(a[i][j][k]=='E')exz=i,exx=j,exy=k;
}
}
}
add(stx,sty,stz,0);
if(f){
cout<<"Escaped in "<<temp<<" minute(s)."<<endl;
}
else cout<<"Trapped!"<<endl;
return 0;
}
我用的递归,哪里错了?
愿有大佬帮助,帮助必关!