bfs算法迷宫代码c语言
时间: 2024-10-29 20:20:52 浏览: 24
BFS(广度优先搜索)是一种用于遍历或寻找图中所有节点的算法,特别适合于解决迷宫问题。以下是使用C语言实现BFS算法的基本步骤:
```c
#include <stdio.h>
#define ROW 5 // 迷宫的行数
#define COL 5 // 迷宫的列数
int maze[ROW][COL] = {
{0, 0, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0} // 例如这样的迷宫矩阵
};
// 检查某个位置是否可以移动
int is_valid(int x, int y) {
return x >= 0 && x < ROW && y >= 0 && y < COL && !maze[x][y];
}
void bfs(int start_x, int start_y) {
int visited[ROW][COL] = {0}; // 记录已访问过的点
visited[start_x][start_y] = 1;
queue<int> q; // 广度优先搜索队列
q.push(start_x);
q.push(start_y);
while (!q.empty()) {
int x = q.front();
q.pop();
printf("(%d,%d)\n", x, q.front()); // 输出当前路径节点坐标
// 遍历相邻未访问的节点
for (int dx = -1; dx <= 1; dx++) {
for (int dy = -1; dy <= 1; dy++) {
if (is_valid(x + dx, y + dy)) {
visited[x + dx][y + dy] = 1;
q.push(x + dx);
q.push(y + dy);
}
}
}
}
}
int main() {
bfs(0, 0); // 从起始位置(0,0)开始搜索
return 0;
}
```
这个程序会从起点开始,按顺序探索每个相连的未访问节点,并打印出找到的路径。如果迷宫有终点标记(比如值为0的地方),你可以修改`bfs`函数的终止条件。
阅读全文