C# 迷宫求解算法
迷宫求解通常可以使用 深度优先搜索(DFS)、广度优先搜索(BFS)、A(A-star)搜索* 或 Dijkstra 算法。以下是几种常见方法的思路及代码示例。
1. 迷宫表示
迷宫通常可以使用 二维数组(char[,]
或 int[,]
)来表示:
0
表示可以通过的路径1
表示墙或障碍物S
(起点)和E
(终点)分别表示迷宫的入口和出口
示例迷宫:
2. 深度优先搜索(DFS)—— 递归
DFS 适用于查找是否存在路径,但不一定是最短路径。它使用 递归 或 栈 进行回溯。
思路
- 从起点
S
开始,向四个方向(上、下、左、右)尝试移动。 - 标记已经访问的路径,避免死循环。
- 如果到达终点
E
,则返回成功路径。
3. 广度优先搜索(BFS)—— 最短路径
BFS 适用于求解最短路径问题,使用 队列 来逐层扩展搜索。
思路
- 从起点
S
开始,使用队列存储当前可达的位置。 - 每次取出一个位置,尝试向四个方向移动,如果可行则加入队列。
- 记录路径长度,找到终点
E
时返回路径长度。
代码实现