迷宫问题java数据结构栈与队列
时间: 2024-01-14 14:03:19 浏览: 72
迷宫问题是一个经典的算法问题,可以使用Java中的数据结构栈和队列来解决。下面是一个使用栈和队列解决迷宫问题的示例代码:
```java
import java.util.*;
public class MazeSolver {
private static final int[][] DIRECTIONS = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; // 上下左右四个方向
public static boolean solveMaze(int[][] maze, int startX, int startY, int endX, int endY) {
int rows = maze.length;
int cols = maze[0].length;
boolean[][] visited = new boolean[rows][cols]; // 记录是否访问过
visited[startX][startY] = true;
Stack<int[]> stack = new Stack<>(); // 使用栈来进行深度优先搜索
stack.push(new int[]{startX, startY});
while (!stack.isEmpty()) {
int[] curr = stack.pop();
int currX = curr[0];
int currY = curr[1];
if (currX == endX && currY == endY) {
return true; // 找到终点
}
for (int[] dir : DIRECTIONS) {
int nextX = currX + dir[0];
int nextY = currY + dir[1];
if (nextX >= 0 && nextX < rows && nextY >= 0 && nextY < cols && maze[nextX][nextY] == 0 && !visited[nextX][nextY]) {
stack.push(new int[]{nextX, nextY});
visited[nextX][nextY] = true;
}
}
}
return false; // 无法找到路径
}
public static void main(String[] args) {
int[][] maze = {
{0, 1, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 1, 0}
};
int startX = 0;
int startY = 0;
int endX = 4;
int endY = 4;
boolean canSolve = solveMaze(maze, startX, startY, endX, endY);
System.out.println("Can solve maze: " + canSolve);
}
}
```
这段代码使用了一个二维数组来表示迷宫,其中0表示可以通过的路径,1表示墙壁。通过深度优先搜索的方式,使用栈来记录路径,直到找到终点或者无法找到路径为止。
阅读全文