色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java迷宮dfs和bfs

張越彬1年前7瀏覽0評論

Java中的DFS(深度優(yōu)先搜索)和BFS(廣度優(yōu)先搜索)算法都可以用于解決迷宮問題。

DFS是一種搜索算法,從初始狀態(tài)開始,沿著一條路徑遍歷迷宮直到找到終點或無法繼續(xù)搜索。當遇到無法繼續(xù)搜索的節(jié)點時,回溯到前一個節(jié)點繼續(xù)搜索。DFS算法往往利用遞歸函數實現。

public static boolean dfs(int[][] maze, int x, int y, boolean[][] visited) {
if (x == maze.length - 1 && y == maze[0].length - 1) {
return true; // 找到終點
}
visited[x][y] = true;
int[][] directions = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; // 四個方向
for (int[] direction : directions) {
int nx = x + direction[0];
int ny = y + direction[1];
if (nx >= 0 && nx< maze.length && ny >= 0 && ny< maze[0].length
&& maze[nx][ny] == 0 && !visited[nx][ny]) {
if (dfs(maze, nx, ny, visited)) {
return true; // 找到一條路徑
}
}
}
return false; // 無法繼續(xù)搜索
}

BFS是一種廣度優(yōu)先搜索算法,它從初始狀態(tài)開始,一層一層地遍歷迷宮,直到找到終點。它利用隊列來實現,先將初始狀態(tài)加入隊列,并標記為已訪問,然后從隊列中取出第一個元素,遍歷其周圍的節(jié)點,并加入隊列中,直到隊列為空或找到終點。

public static boolean bfs(int[][] maze, boolean[][] visited) {
Queuequeue = new LinkedList<>();
queue.offer(new int[]{0, 0}); // 初始狀態(tài)
visited[0][0] = true;
int[][] directions = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; // 四個方向
while (!queue.isEmpty()) {
int[] curr = queue.poll();
int x = curr[0];
int y = curr[1];
if (x == maze.length - 1 && y == maze[0].length - 1) {
return true; // 找到終點
}
for (int[] direction : directions) {
int nx = x + direction[0];
int ny = y + direction[1];
if (nx >= 0 && nx< maze.length && ny >= 0 && ny< maze[0].length
&& maze[nx][ny] == 0 && !visited[nx][ny]) {
queue.offer(new int[]{nx, ny}); // 加入隊列
visited[nx][ny] = true;
}
}
}
return false; // 無法繼續(xù)搜索
}