使用C语言编写一个迷宫求解问题的程序,在下面代码中,maze 数组表示迷宫的布局,其中 1 表示可以通过的路径,0 表示墙壁或障碍物。 solution 数组用于存储找到的解决方案。使用递归的方式遍历迷宫中的路径,如果找到了目标位置(最右下角),则将路径标记为 1,否则尝试向四个方向移动,并继续递归搜索。 在 main 函数中,调用 solveMaze 函数来解决迷宫问题,如果找到了解决方案,则打印出路径,否则打印出未找到解决方案的提示信息。
#include <stdio.h>
#define SIZE 5
int maze[SIZE][SIZE] = {
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1},
{0, 0, 0, 0, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 0, 1}
};
int solution[SIZE][SIZE];
int solveMaze(int x, int y) {
if (x < 0 || x >= SIZE || y < 0 || y >= SIZE)
return 0;
if (maze[x][y] == 0)
return 0;
if (x == SIZE - 1 && y == SIZE - 1) {
solution[x][y] = 1;
return 1;
}
if (solution[x][y] == 1)
return 0;
solution[x][y] = 1;
if (solveMaze(x + 1, y) == 1) // Move right
return 1;
if (solveMaze(x, y + 1) == 1) // Move down
return 1;
if (solveMaze(x - 1, y) == 1) // Move left
return 1;
if (solveMaze(x, y - 1) == 1) // Move up
return 1;
solution[x][y] = 0;
return 0;
}
void printSolution() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%d ", solution[i][j]);
}
printf("\n");
}
}
int main() {
if (solveMaze(0, 0) == 1) {
printf("Solution found!\n");
printSolution();
} else {
printf("No solution found.\n");
}
return 0;
}
请注意,上述代码中给出了一个简单的迷宫示例,你可以根据实际需要修改迷宫的布局和大小。此外,该代码假设迷宫的起点始终为 (0, 0),终点始终为 (SIZE-1, SIZE-1),你也可以根据需要进行修改。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END