用c语言编写一个迷宫,要求手动输入一个足够大的迷宫,进口在左上角,出口为右下上角,由0和1组成,0表示通路, 1表示墙,输出U,L,R,D表示路径
时间: 2023-10-03 21:01:49 浏览: 103
好的,以下是用C语言编写一个迷宫的代码,实现手动输入一个迷宫,进口为左上角,出口为右下角,由0和1组成,输出U,L,R,D表示路径。
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
int maze[MAX_LEN][MAX_LEN]; // 迷宫矩阵
int visited[MAX_LEN][MAX_LEN]; // 记录是否访问过
int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 四个方向
char path[4] = {'U', 'L', 'R', 'D'}; // 对应四个方向的路径
void dfs(int x, int y, int m, int n) {
if (x == m && y == n) { // 到达出口
printf("路径:");
return;
}
for (int i = 0; i < 4; i++) { // 遍历四个方向
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (nx >= 0 && nx <= m && ny >= 0 && ny <= n && !visited[nx][ny] && maze[nx][ny] == 0) {
visited[nx][ny] = 1;
printf("%c", path[i]); // 输出路径
dfs(nx, ny, m, n);
return;
}
}
}
int main() {
int m, n;
printf("请输入迷宫的行数和列数:");
scanf("%d%d", &m, &n);
printf("请输入迷宫矩阵:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &maze[i][j]);
}
}
visited[0][0] = 1; // 从左上角开始
dfs(0, 0, m - 1, n - 1); // 从左上角开始,到右下角结束
return 0;
}
```
程序会提示用户输入迷宫的行数和列数,然后让用户输入迷宫矩阵,最后输出从左上角到右下角的路径。其中,0表示通路,1表示墙,U表示向上,L表示向左,R表示向右,D表示向下。
阅读全文