本篇文章利用递归解决迷宫求解问题.
一、迷宫求解原理及代码实现
首先迷宫求解问题中我们需要用一个二维数组来创建迷宫地图;该地图需要实现什么地方是空地,什么地方是墙体,然后我们需要创建一个点类,这个点类如何与地图相关联起来呢?我们可以通过创建一个二维数组但是二维数组中全部从放的是点类型的数据
(Point mazeMap[10][10]),这样就能通过坐标将他们关联起来,因为地图是创建在一个二维数组中的,所以他其中的每个元素我们都可以通过他的行数和列数来表示,正好与点的横纵坐标相对于,例如一个点的坐标是(0,9)那么他在地图中所对应的就是第一行第十列这个位置(因为数组是从零开始存储数据的),我们还需要标记一个点是否走过或者没走过,并且还需要判断这个点是墙体还是空地,
1、创建点类,
2、走迷宫的函数
每一步都标有注释,我们制定规则顺时针方向探索前进,在每一个点上,我们先判断右边能不能前进,能前进则前进,不能则看下方能不能前进,如此顺时针依次判断,
该函数需要我们传进两个点一个起点一个终点。
3、封装打印地图的函数,
我这里的地图使用string类型来表示的你也可以使用其他类型比如int ,0表示空地1表示墙体,
4、main函数
5、运行结果如图所示
这里直接从起点下一个点开始打印了,
6、下面是全部代码:
#include<iostream>
using namespace std;
#include<stack>
#define MAXSIZE 10;
string mazeMapValue[