具体代码c语言
时间: 2023-08-12 17:24:10 浏览: 34
以下是一个简单的C语言程序示例,用深度优先搜索算法解决迷宫问题:
```c
#include <stdio.h>
#include <stdbool.h>
#define ROW 5
#define COL 5
// 定义地图
int map[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}
};
// 定义标记数组
bool visited[ROW][COL];
// 定义起点和终点
int start_row = 0, start_col = 0;
int end_row = 4, end_col = 4;
// 搜索函数
bool dfs(int row, int col) {
if (row < 0 || row >= ROW || col < 0 || col >= COL) {
return false; // 超出边界,返回false
}
if (map[row][col] == 1 || visited[row][col]) {
return false; // 障碍物或已经访问过,返回false
}
if (row == end_row && col == end_col) {
return true; // 找到终点,返回true
}
visited[row][col] = true; // 标记为已经访问过
if (dfs(row-1, col) || dfs(row+1, col) || dfs(row, col-1) || dfs(row, col+1)) {
printf("(%d, %d) ", row, col); // 输出路径
return true;
}
return false; // 没有找到路径,返回false
}
int main() {
if (dfs(start_row, start_col)) {
printf("找到路径\n");
} else {
printf("找不到路径\n");
}
return 0;
}
```
这个程序中,我们利用深度优先搜索算法,在地图中从起点开始搜索所有可行的路径,直到找到终点。在搜索过程中,我们利用标记数组记录已经访问过的点,避免重复访问。如果找到了终点,则输出找到的路径。如果没有找到路径,则输出“找不到路径”。