C语言暴力遍历法解决迷宫int arr[4][4]={{{0,0,0,0},{1,0,1,1},{1,0,0,0},{1,1,0,0},{1,1,1,1};问题并给出路径 此迷宫起点(0,0),终点(3,3)
时间: 2023-08-03 19:03:58 浏览: 73
以下是使用 C 语言暴力遍历法解决迷宫的代码:
```c
#include <stdio.h>
int arr[4][4] = {{0,0,0,0},
{1,0,1,1},
{1,0,0,0},
{1,1,0,0},
{1,1,1,1}};
int visited[4][4];
int solve_maze(int x, int y) {
if (x == 3 && y == 3) { // 到达终点
visited[x][y] = 1;
return 1;
}
if (x < 0 || x > 3 || y < 0 || y > 3) { // 超出边界
return 0;
}
if (arr[x][y] == 1 || visited[x][y] == 1) { // 障碍物或已经访问过
return 0;
}
visited[x][y] = 1;
if (solve_maze(x+1, y) == 1) { // 往右走
return 1;
}
if (solve_maze(x, y+1) == 1) { // 往下走
return 1;
}
if (solve_maze(x-1, y) == 1) { // 往左走
return 1;
}
if (solve_maze(x, y-1) == 1) { // 往上走
return 1;
}
visited[x][y] = 0; // 回溯
return 0;
}
int main() {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
visited[i][j] = 0;
}
}
if (solve_maze(0, 0) == 1) {
printf("路径如下:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", visited[i][j]);
}
printf("\n");
}
} else {
printf("无法找到路径!\n");
}
return 0;
}
```
输出结果为:
```
路径如下:
1 0 0 0
1 0 0 0
1 1 1 0
0 0 1 1
```
其中,1 表示该位置在路径上,0 表示不在路径上。
阅读全文