老鼠迷宫java最短路线代码实现
时间: 2023-08-11 16:07:56 浏览: 81
以下是一个简单的老鼠迷宫最短路线的 Java 代码实现:
```java
public class MazeSolver {
private int[][] maze;
private boolean[][] visited;
private LinkedList<Point> path;
public MazeSolver(int[][] maze) {
this.maze = maze;
this.visited = new boolean[maze.length][maze[0].length];
this.path = new LinkedList<>();
}
public void solve() {
solve(0, 0);
}
private boolean solve(int row, int col) {
if (row < 0 || col < 0 || row >= maze.length || col >= maze[0].length) {
return false; // 超出边界,返回 false
} else if (visited[row][col] || maze[row][col] == 1) {
return false; // 已经访问过或者是墙,返回 false
} else if (row == maze.length - 1 && col == maze[0].length - 1) {
path.addLast(new Point(row, col));
return true; // 到达终点,返回 true
} else {
visited[row][col] = true;
if (solve(row + 1, col) || solve(row, col + 1) ||
solve(row - 1, col) || solve(row, col - 1)) {
path.addLast(new Point(row, col));
return true; // 四个方向都走一遍,如果有一条路通向终点,就返回 true
} else {
return false; // 四个方向都走过了,都没有路通向终点,返回 false
}
}
}
public void printPath() {
if (path.isEmpty()) {
System.out.println("没有找到路径");
} else {
for (Point p : path) {
System.out.println("(" + p.x + ", " + p.y + ")");
}
}
}
public static void main(String[] args) {
int[][] maze = {
{0, 1, 0, 0},
{0, 0, 0, 1},
{0, 1, 0, 0},
{0, 1, 1, 0}
};
MazeSolver solver = new MazeSolver(maze);
solver.solve();
solver.printPath();
}
}
```
这个程序使用了递归的方法来遍历迷宫,从起点开始走,每次都尝试向四个方向走一步,如果能够到达终点就返回 true,否则返回 false。如果四个方向都走过了,都没有路通向终点,就返回 false。每次递归结束后,如果找到了一条通向终点的路,就把这个点加入路径中。最后,打印路径即可。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)