迷宫问题c语言完整代码实验一
时间: 2023-12-20 09:02:27 浏览: 164
迷宫问题是一个经典的算法问题,可以用来考验程序设计能力和逻辑思维能力。下面是一个简单的C语言完整代码实验一:
```c
#include <stdio.h>
#define N 5
int maze[N][N] = {
{0, 1, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 1, 0}
};
int sol[N][N];
int isSafe(int x, int y) {
return (x >= 0 && x < N && y >= 0 && y < N && maze[x][y] == 0);
}
int solveMazeUtil(int x, int y) {
if (x == N - 1 && y == N - 1) {
sol[x][y] = 1;
return 1;
}
if (isSafe(x, y)) {
sol[x][y] = 1;
if (solveMazeUtil(x + 1, y) || solveMazeUtil(x, y + 1)) {
return 1;
}
sol[x][y] = 0;
return 0;
}
return 0;
}
void printSolution() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", sol[i][j]);
}
printf("\n");
}
}
void solveMaze() {
if (solveMazeUtil(0, 0) == 0) {
printf("No solution exists");
return;
}
printSolution();
}
int main() {
solveMaze();
return 0;
}
```
以上代码是一个简单的迷宫问题的解决方案,使用了递归的方法来进行求解。首先定义了一个迷宫的二维数组,然后使用solveMazeUtil函数来递归求解迷宫,最后在main函数中调用solveMaze函数来输出结果。通过这个实验,可以更好地理解递归算法和解决问题的思路。
阅读全文