60分求助
查看原帖
60分求助
892625
WangYinxiAlex楼主2023/12/31 11:37
#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;
}

我用的递归,哪里错了?

愿有大佬帮助,帮助必关!

2023/12/31 11:37
加载中...