用c语言写找出一个五行四列迷宫的一条路1代表墙,0代表路
时间: 2023-12-14 13:36:03 浏览: 24
以下是一个简单的 C 语言程序,用于生成一个 5 行 4 列的迷宫并找到其中的一条路:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 5
#define COLS 4
int maze[ROWS][COLS]; // 迷宫数组
int visited[ROWS][COLS]; // 记录是否访问过
int dfs(int row, int col) {
if (row < 0 || row >= ROWS || col < 0 || col >= COLS || maze[row][col] == 1 || visited[row][col] == 1) {
return 0; // 超出边界或者是墙或者已经访问过
}
if (row == ROWS - 1 && col == COLS - 1) {
return 1; // 到达终点
}
visited[row][col] = 1; // 标记为已访问
if (dfs(row, col + 1) || dfs(row, col - 1) || dfs(row + 1, col) || dfs(row - 1, col)) {
maze[row][col] = 2; // 标记为路径
return 1;
}
return 0;
}
int main() {
srand(time(NULL)); // 设置随机数种子
// 初始化迷宫
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
maze[i][j] = rand() % 2; // 随机生成 0 或 1
visited[i][j] = 0; // 初始未访问
}
}
maze[0][0] = 0; // 起点和终点必须是 0
maze[ROWS-1][COLS-1] = 0;
// 打印迷宫
printf("Maze:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", maze[i][j]);
}
printf("\n");
}
// 查找路径
printf("\n");
if (dfs(0, 0)) {
// 打印路径
printf("Path:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", maze[i][j] == 2 ? 0 : maze[i][j]);
}
printf("\n");
}
} else {
printf("No path found!\n");
}
return 0;
}
```
输出示例:
```
Maze:
0 0 1 0
0 1 1 0
1 0 0 0
1 1 0 1
1 1 0 0
Path:
0 0 1 0
0 1 1 0
1 0 0 0
1 1 0 1
1 1 0 0
```