DFS(深度优先遍历)走迷宫算法

DFS算法简化至27行
走迷宫从左上角出发,右下角为出口

源代码:

import java.util.Arrays;
public class DFS {
	static int N = 8;
	static int H[] = { 1, 0, -1, 0 }, V[] = { 0, 1, 0, -1 };
	static char Maze[][] = {
			{ 'O', 'X', 'X', 'X', 'X', 'X', 'X', 'X' }, { 'O', 'O', 'O', 'O', 'O', 'X', 'X', 'X' },
			{ 'X', 'O', 'X', 'X', 'O', 'O', 'O', 'X' }, { 'X', 'O', 'X', 'X', 'O', 'X', 'X', 'O' },
			{ 'X', 'O', 'X', 'X', 'X', 'X', 'X', 'X' }, { 'X', 'O', 'X', 'X', 'O', 'O', 'O', 'X' },
			{ 'X', 'O', 'O', 'O', 'O', 'X', 'O', 'O' }, { 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'O' } };
	public static void main(String args[]) {
		find(0, 0);
	}
	static void find(int x, int y) {
		if (x == N - 1 && y == N - 1) {
			Maze[x][y] = '*';
			for (int k = 0; k < N; k++)
				System.out.println(Arrays.toString(Maze[k]));
			return;
		}
		for (int k = 0; k < 4; k++)
			if (x >= 0 && x < N && y >= 0 && y < N && Maze[x][y] == 'O') {
				Maze[x][y] = '*';
				find(x + H[k], y + V[k]);
				Maze[x][y] = 'O';
			}
	}
}

运行结果:
在这里插入图片描述

发布了53 篇原创文章 · 获赞 1 · 访问量 2777

猜你喜欢

转载自blog.csdn.net/weixin_43873198/article/details/105535944