对用**map_way表示的迷宫地图,其中0为撞墙1为通路,写一个DFS(int **map_way)自动求解的C语言函数
时间: 2023-11-27 13:03:25 浏览: 39
好的,这是一个简单的DFS算法实现,用于自动求解迷宫地图:
```c
#include <stdio.h>
#define MAX_ROW 5
#define MAX_COL 5
int map_way[MAX_ROW][MAX_COL] = {
{1, 0, 1, 1, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{1, 1, 1, 0, 1}
};
void dfs(int row, int col) {
map_way[row][col] = 2; // 标记为已经走过
if (row == MAX_ROW - 1 && col == MAX_COL - 1) { // 到达终点
printf("找到出口!\n");
return;
}
// 上下左右四个方向尝试走
if (row > 0 && map_way[row - 1][col] == 1) { // 上
dfs(row - 1, col);
}
if (row < MAX_ROW - 1 && map_way[row + 1][col] == 1) { // 下
dfs(row + 1, col);
}
if (col > 0 && map_way[row][col - 1] == 1) { // 左
dfs(row, col - 1);
}
if (col < MAX_COL - 1 && map_way[row][col + 1] == 1) { // 右
dfs(row, col + 1);
}
}
int main() {
dfs(0, 0);
return 0;
}
```
在这个例子中,我们假设了一个迷宫地图,用一个二维数组 `map_way` 来表示。其中,0 表示墙壁,1 表示通路,2 表示已经走过的通路。我们从左上角的起点开始,一直走到右下角的终点。在每一步中,我们都尝试从当前位置向上下左右四个方向走,如果发现某个方向可以走,就继续往那个方向走下去,直到我们到达终点。
注意,这个DFS算法并不一定能够找到最短路径,因为它只是简单地尝试所有可能的路径,而没有进行任何优化。如果你需要找到最短路径,可以考虑使用其他算法,比如BFS(广度优先搜索)或A*算法等。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)