用c写深度优先算法求迷宫
时间: 2023-10-13 10:07:54 浏览: 86
迷宫问题c语言 深度优先搜索
5星 · 资源好评率100%
以下是使用C语言实现深度优先搜索算法求解迷宫的示例代码:
```c
#include <stdio.h>
#define ROW 6
#define COL 6
int maze[ROW][COL] = {
{0, 1, 0, 0, 0, 0},
{0, 1, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 1},
{0, 1, 0, 0, 0, 0}
};
void dfs(int x, int y) {
if (x < 0 || x >= ROW || y < 0 || y >= COL) { // 判断是否越界
return;
}
if (maze[x][y] == 1 || maze[x][y] == 2) { // 判断是否是障碍或已经访问过
return;
}
if (x == ROW - 1 && y == COL - 1) { // 到达终点
maze[x][y] = 2;
return;
}
maze[x][y] = 2; // 标记为已访问
dfs(x + 1, y); // 向下搜索
dfs(x - 1, y); // 向上搜索
dfs(x, y + 1); // 向右搜索
dfs(x, y - 1); // 向左搜索
}
int main() {
dfs(0, 0); // 从起点开始搜索
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", maze[i][j]); // 输出搜索结果
}
printf("\n");
}
return 0;
}
```
运行结果:
```
2 1 2 2 2 2
2 1 2 1 1 2
2 2 2 2 2 2
2 1 1 1 2 2
2 2 2 1 2 1
2 1 2 2 2 2
```
其中,数字2表示可以到达的位置,数字1表示障碍物,数字0表示未被访问的位置。
阅读全文