c语言 迷宫算法
时间: 2023-07-26 20:12:49 浏览: 52
迷宫算法通常使用的是深度优先搜索(DFS)或广度优先搜索(BFS)。
下面是一个基于DFS的C语言迷宫算法示例:
```
#include <stdio.h>
// 定义迷宫大小
#define ROW 10
#define COL 10
// 迷宫地图
int maze[ROW][COL] = {
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,0,0,0,0,1},
{1,0,1,0,1,0,1,1,0,1},
{1,0,1,0,0,0,0,0,0,1},
{1,0,1,1,1,1,1,1,0,1},
{1,0,0,0,0,0,0,0,0,1},
{1,0,1,1,1,1,1,1,0,1},
{1,0,0,0,0,0,0,0,0,1},
{1,0,1,1,1,1,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1}
};
// 定义方向数组
int direction[4][2] = {{0,1}, {1,0}, {0,-1}, {-1,0}};
// DFS搜索
int DFS(int x, int y) {
// 判断是否到达终点
if (x == ROW-2 && y == COL-2) {
maze[x][y] = 2; // 标记为已到达终点
return 1;
}
// 标记已访问
maze[x][y] = 2;
// 尝试四个方向
for (int i = 0; i < 4; i++) {
int nx = x + direction[i][0];
int ny = y + direction[i][1];
if (maze[nx][ny] == 0) { // 未访问过
if (DFS(nx, ny)) { // 继续搜索
return 1;
}
}
}
return 0;
}
int main() {
// 打印原始迷宫地图
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
printf("\n");
// 搜索迷宫
DFS(1, 1);
// 打印搜索后的迷宫地图
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
return 0;
}
```
使用DFS搜索迷宫,从起点开始,尝试四个方向,如果该点未访问过就继续搜索,直到到达终点或无法继续搜索为止。在搜索过程中,我们将已访问过的点标记为2,未访问过的点标记为0,墙壁标记为1。最终得到的迷宫地图中,访问过的点标记为2,未访问过的点标记为0。
相关推荐
![](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)