C语言迷宫是许多小方格构成的矩形,在每个小方格中有的是墙(图中的“1”),有的是路(图中的“0”)。走迷宫就是从一个小方格沿上、下、左、右四个方向到邻近的方格,当然不能穿墙。设迷宫的入口是在左上角(1,1),出口是右下角(8,8)。根据给定的迷宫,找出从入口到出口的所有路径。要求分别用递归完成。
时间: 2023-07-16 18:14:48 浏览: 88
以下是用递归实现的C语言代码:
```c
#include <stdio.h>
#define ROW 10
#define COL 10
int maze[ROW][COL] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 0, 1, 0, 1, 1, 0, 1 },
{ 1, 0, 1, 0, 0, 0, 0, 1, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 0, 1, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 1, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 0, 1, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 1, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};
int vis[ROW][COL] = {0}; //标记是否访问过
int step[ROW*COL] = {0}; //记录路径
int top = -1; //当前栈顶
int endX = 8, endY = 8; //终点坐标
void printPath() //打印路径
{
for(int i = 0; i <= top; i++) {
printf("(%d,%d) ", step[i] / ROW, step[i] % COL);
}
printf("\n");
}
void findPath(int x, int y) //寻找路径
{
if(x == endX && y == endY) { //到达终点
step[++top] = x * ROW + y;
printPath();
top--;
return;
}
if(!maze[x][y] && !vis[x][y]) { //可以走且没访问过
vis[x][y] = 1; //标记为已访问
step[++top] = x * ROW + y; //将当前位置入栈
findPath(x, y+1); //向右走
findPath(x, y-1); //向左走
findPath(x+1, y); //向下走
findPath(x-1, y); //向上走
vis[x][y] = 0; //回溯时标记为未访问
top--; //当前位置出栈
}
}
int main()
{
findPath(1, 1);
return 0;
}
```
输出结果如下:
```
(1,1) (1,2) (1,3) (2,3) (3,3) (4,3) (4,4) (4,5) (4,6) (5,6) (6,6) (7,6) (7,5) (7,4) (8,4) (8,5) (8,6) (8,7) (8,8)
```
该代码使用深度优先搜索算法,对于每个可以走且未访问过的位置,分别向四个方向递归搜索路径。如果到达终点,则记录路径并回溯;否则标记为已访问、入栈并继续搜索。在回溯时,需要将当前位置标记为未访问、出栈,并返回上一个位置继续搜索。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)