深度优先搜索求解迷宫问题算法
时间: 2023-11-30 17:42:38 浏览: 168
C语言使用深度优先搜索算法解决迷宫问题(堆栈)
5星 · 资源好评率100%
以下是使用深度优先搜索算法解决迷宫问题的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 5
int maze[ROW][COL] = {
{0, 1, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 1, 0}
};
int visited[ROW][COL] = {0};
int dfs(int x, int y) {
if (x < 0 || x >= ROW || y < 0 || y >= COL) {
return 0;
}
if (maze[x][y] == 1 || visited[x][y] == 1) {
return 0;
}
if (x == ROW - 1 && y == COL - 1) {
return 1;
}
visited[x][y] = 1;
if (dfs(x - 1, y) || dfs(x + 1, y) || dfs(x, y - 1) || dfs(x, y + 1)) {
printf("(%d, %d)\n", x, y);
return 1;
}
return 0;
}
int main() {
dfs(0, 0);
return 0;
}
```
该算法使用递归实现,首先判断当前位置是否越界、是否为障碍物、是否已经访问过,如果满足以上条件则返回0。如果当前位置是终点,则返回1。否则,将当前位置标记为已访问,然后递归访问当前位置的上下左右四个方向,如果有一条路径能够到达终点,则输出当前位置并返回1,否则返回0。
阅读全文