public class POJ2251{
static int startX = 0;
static int startY = 0;
static int startZ = 0;
static int l;
static int r;
static int c;
private static int[][] directions = {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(true) {
l = scanner.nextInt();
r = scanner.nextInt();
c = scanner.nextInt();
if(l == 0 && r == 0 && c == 0) {
System.out.println("end");
return;
}
char[][][] chars = new char[l][r][c];
int[][][] visits = new int[l][r][c];//0:unvisited 1:visited
for(int i = 0;i < l; i++) {
for(int j = 0;j < r; j++) {
chars[i][j] = scanner.next().toCharArray();
for(int k = 0; k < chars[i][j].length; k++) {
if(chars[i][j][k] == 'S') {
startX = i;
startY = j;
startZ = k;
}
}
}
}
bfs(chars, visits);
}
}
private static void bfs(char[][][] chars, int[][][] visits) {
Point point = new Point(startX, startY, startZ, 0);
Queue<Point> points = new LinkedList<>();
points.add(point);
visits[startX][startY][startZ] = 1;
while(!points.isEmpty()){
Point poll = points.poll();
//exit
if(chars[poll.getX()][poll.getY()][poll.getZ()] == 'E') {
System.out.println("Escaped in " + poll.getMinutes() + " minute(s).");
return;
}
for(int i = 0; i < 6; i++){
int x = poll.getX() + directions[i][0];
int y = poll.getY() + directions[i][1];
int z = poll.getZ() + directions[i][2];
if (x < l && x >= 0
&& y < r && y >= 0
&& z < c && z >= 0
&& chars[x][y][z] != '#'
&& visits[x][y][z] == 0) {
Point temp = new Point(x, y, z, poll.getMinutes() + 1);
points.add(temp);
visits[x][y][z] = 1;
}
}
}
System.out.println("Trapped!");
}
static class Point{
private int x;
private int y;
private int z;
private int minutes;
Public Point(int x, int y, int z, int minutes){
this.x = x;
this.y = y;
this.z = z;
this.minutes = minutes;
}
public int getX(){return x;}
public int getY(){return y;}
public int getZ(){return z;}
public int getMinutes(){return minutes;}
}
}
POJ-2251 Java实现
最新推荐文章于 2024-07-10 21:37:49 发布