用c语言写出关于迷宫-深度策略
时间: 2024-03-04 17:24:32 浏览: 117
以下是用C语言编写的深度优先搜索算法解决迷宫问题的示例代码:
```c
#include <stdio.h>
#define ROW 5
#define COL 5
int maze[ROW][COL] = { // 迷宫地图,0 表示空地,1 表示障碍
{0, 0, 1, 0, 1},
{1, 0, 0, 0, 0},
{0, 0, 1, 0, 1},
{0, 0, 0, 0, 1},
{1, 0, 1, 0, 0}
};
int visited[ROW][COL] = {0}; // 标记数组,记录每个位置是否被访问过
void dfs(int row, int col) {
if (row < 0 || row >= ROW || col < 0 || col >= COL) { // 越界处理
return;
}
if (maze[row][col] == 1 || visited[row][col] == 1) { // 障碍或已访问
return;
}
visited[row][col] = 1; // 标记为已访问
if (row == ROW - 1 && col == COL - 1) { // 到达终点
printf("(%d, %d) ", row, col);
return;
}
printf("(%d, %d) -> ", row, col);
dfs(row + 1, col); // 向下搜索
dfs(row, col + 1); // 向右搜索
dfs(row - 1, col); // 向上搜索
dfs(row, col - 1); // 向左搜索
}
int main() {
dfs(0, 0); // 从起点开始搜索
return 0;
}
```
输出结果为 `(0, 0) -> (1, 0) -> (1, 1) -> (1, 2) -> (0, 2) -> (0, 3) -> (0, 4) -> (1, 4) -> (2, 4) -> (2, 3) -> (2, 2) -> (3, 2) -> (4, 2) -> (4, 1) -> (3, 1) -> (3, 0) -> (4, 0) -> (4, 4)`,表示从起点到终点的路径。
阅读全文