20分求调
查看原帖
20分求调
1023461
Nian_Gao楼主2023/12/18 14:50

#include<iostream>

using namespace std;

int l, r, c, ans, num = 0, a, b, d;
char lis[30][30][30];
bool vit[30][30][30];
void dfs(int z, int x, int y){
	
	if(lis[z][x][y] == 'E'){
		ans = num;
		return;
	}
	
	if(lis[z][x][y + 1] != '#' && !vit[z][x][y + 1] && y + 1 <= c){
		num++;
		vit[z][x][y + 1] = true;
		dfs(z, x, y + 1);
		vit[z][x][y + 1] = false;
		num--;
	}else if(lis[z][x + 1][y] != '#' && !vit[z][x + 1][y] && x + 1 <= r){
		num++;
		vit[z][x + 1][y] = true;
		dfs(z, x + 1, y);
		vit[z][x + 1][y] = false;
		num--;
	}else if(lis[z][x - 1][y] != '#' && !vit[z][x - 1][y] && x - 1 > 0){
		num++;
		vit[z][x - 1][y] = true;
		dfs(z, x - 1, y);
		vit[z][x - 1][y] = false;
		num--;
	}else if(lis[z][x][y - 1] != '#' && !vit[z][x][y - 1] && y - 1 > 0){
		num++;
		vit[z][x][y - 1] = true;
		dfs(z, x, y - 1);
		vit[z][x][y - 1] = false;
		num--;
	}else if(lis[z + 1][x][y] != '#' && !vit[z + 1][x][y] && z + 1 <= l){
		num++;
		vit[z + 1][x][y] = true;
		dfs(z + 1, x, y);
		vit[z + 1][x][y] = false;
		num--;
	}else if(lis[z - 1][x][y] != '#' && !vit[z - 1][x][y] && z - 1 > 0){
		num++;
		vit[z - 1][x][y] = true;
		dfs(z - 1, x, y);
		vit[z - 1][x][y] = false;
		num--;
	}

}
int main(){

	cin >> l >> r >> c;
	for(int i = 1;i <= l;i++){
		for(int x = 1;x <= r;x++){
			for(int y = 1;y <= c;y++){
				cin >> lis[i][x][y];
				if(lis[i][x][y] == 'S'){
					a = i;b = x;d = y;
				}
			}
		}
	}

	dfs(a, b, d);
	if(ans == 0){
		cout << "Trapped!" << endl;
		return 0;
	}
	cout << "Escaped in " << ans << " minute(s)." << endl;

	return 0;
}
2023/12/18 14:50
加载中...