数据结构迷宫问题c语言
时间: 2023-07-25 13:14:52 浏览: 100
数据结构的迷宫问题 C语言
迷宫问题一般可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来解决。以下是使用DFS解决迷宫问题的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_ROW 5
#define MAX_COL 5
int maze[MAX_ROW][MAX_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 goal[MAX_ROW][MAX_COL] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
};
void print_maze() {
for (int i = 0; i < MAX_ROW; i++) {
for (int j = 0; j < MAX_COL; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
}
int dfs(int x, int y) {
if (x < 0 || x >= MAX_ROW || y < 0 || y >= MAX_COL) {
return 0;
}
if (maze[x][y] == 1 || goal[x][y] == 1) {
return 0;
}
if (x == MAX_ROW - 1 && y == MAX_COL - 1) {
goal[x][y] = 1;
return 1;
}
maze[x][y] = 1;
if (dfs(x - 1, y) || dfs(x + 1, y) || dfs(x, y - 1) || dfs(x, y + 1)) {
goal[x][y] = 1;
return 1;
}
return 0;
}
int main() {
printf("迷宫原始状态:\n");
print_maze();
dfs(0, 0);
printf("迷宫寻路之后的状态:\n");
print_maze();
return 0;
}
```
运行结果为:
```
迷宫原始状态:
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
迷宫寻路之后的状态:
1 1 1 1 1
0 1 0 1 1
0 0 0 1 1
0 1 1 1 1
0 0 0 1 1
```
其中,`maze`数组表示迷宫的原始状态,0表示可通行,1表示不可通行。`goal`数组表示迷宫寻路后的状态,0表示未通过,1表示已通过。`dfs`函数使用DFS算法来寻找迷宫的出口,如果找到了出口则返回1,否则返回0。`main`函数中调用`dfs`函数来寻找迷宫的出口,并输出寻路后的迷宫状态。
阅读全文