帮我写迷宫问题的代码c语言
时间: 2023-06-11 21:05:29 浏览: 90
当然可以,以下是一个简单的迷宫问题的代码:
```
#include <stdio.h>
#include <stdlib.h>
#define ROW 6
#define COL 6
int maze[ROW][COL] = {
{0, 1, 0, 0, 0, 0},
{0, 1, 0, 1, 1, 0},
{0, 0, 0, 0, 1, 0},
{1, 1, 1, 0, 1, 0},
{0, 0, 0, 0, 1, 0},
{0, 1, 1, 1, 0, 0},
};
int visited[ROW][COL] = {0};
int dir[4][2] = {{0,1}, {1,0}, {0,-1}, {-1,0}}; // 右、下、左、上
void DFS(int x, int y)
{
int i, nx, ny;
visited[x][y] = 1;
for (i = 0; i < 4; i++) {
nx = x + dir[i][0];
ny = y + dir[i][1];
if (nx < 0 || nx >= ROW || ny < 0 || ny >= COL) {
continue;
}
if (!visited[nx][ny] && !maze[nx][ny]) {
DFS(nx, ny);
}
}
}
int main()
{
int i, j;
int start_x = 0, start_y = 0, end_x = 5, end_y = 5;
printf("迷宫地图:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
DFS(start_x, start_y);
if (visited[end_x][end_y]) {
printf("从 (%d,%d) 到 (%d,%d) 有通路!\n", start_x, start_y, end_x, end_y);
} else {
printf("从 (%d,%d) 到 (%d,%d) 没有通路!\n", start_x, start_y, end_x, end_y);
}
return 0;
}
```
这是一个简单的深度优先搜索算法来解决迷宫问题。在这个示例中,我们使用了一个简单的 6x6 的二维迷宫数组。0 表示可以通过,1 表示障碍。我们使用 DFS 搜索算法来寻找从起点到终点的通路。如果存在一条路径从起点到终点,则输出“从 (start_x,start_y) 到 (end_x,end_y) 有通路!”;否则输出“从 (start_x,start_y) 到 (end_x,end_y) 没有通路!”。
阅读全文