C语言解决迷宫int arr[6][6]={{1,1,1,1,1,1},{1,0,0,0,0,1},{1,1,0,1,1,1},{1,1,0,0,0,1},{1,1,1,0,0,1},{1,1,1,1,1,1}};问题
时间: 2023-08-03 20:03:29 浏览: 62
这个迷宫是一个6x6的二维数组,其中1代表墙壁,0代表可以通行的空地。你可以使用深度优先搜索(DFS)或广度优先搜索(BFS)解决这个迷宫问题。
下面是使用DFS解决迷宫的示例代码:
```c
#include <stdio.h>
int maze[6][6] = {{1,1,1,1,1,1},
{1,0,0,0,0,1},
{1,1,0,1,1,1},
{1,1,0,0,0,1},
{1,1,1,0,0,1},
{1,1,1,1,1,1}};
int visited[6][6] = {0}; // 记录是否已经访问过
int dfs(int x, int y) {
if (x == 4 && y == 4) { // 到达终点
return 1;
}
visited[x][y] = 1; // 标记为已访问
// 向四个方向探索
if (maze[x+1][y] == 0 && visited[x+1][y] == 0 && dfs(x+1, y)) { // 向下探索
return 1;
}
if (maze[x][y+1] == 0 && visited[x][y+1] == 0 && dfs(x, y+1)) { // 向右探索
return 1;
}
if (maze[x-1][y] == 0 && visited[x-1][y] == 0 && dfs(x-1, y)) { // 向上探索
return 1;
}
if (maze[x][y-1] == 0 && visited[x][y-1] == 0 && dfs(x, y-1)) { // 向左探索
return 1;
}
return 0; // 无法到达终点
}
int main() {
if (dfs(1, 1)) { // 从起点开始探索
printf("迷宫有解!\n");
} else {
printf("迷宫无解!\n");
}
return 0;
}
```
这个程序的输出应该是“迷宫有解!”
阅读全文