C++基于控制台的迷宫实现(上)

来源:互联网 发布:淘宝助理如何在线发货 编辑:程序博客网 时间:2024/06/05 14:14

1 程序简介

C++控制台程序中,使用一个二维数组表示迷宫,数组中的元素0表示墙,1表示路,如下代码所示

int maze[8][8] = {1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1};

其中,maze[0][0]表示起点,maze[7][7]表示终点,该程序的输入为从起点到终点的路径,如图1所示。

 

1 迷宫的路径显示

2 迷宫分析

个站立点四个方向(上、下、左、有),每个方向上都对应一个点这四个点中,有一个点是当前站立点的上一个点,另外三个点是当前站立点的下一个点”,如图2所示,红色框为当前站立点,蓝色框为“上一个点”,黄色框为三个“下一个点”

 

2 站立点的四个方向

当前站立点有三种状态,分别是“终点”、“通路”和“死路”。如果当前站立点是“终点”,则停止搜索;如果当前站立点是“通路”,则向下继续走;如果当前站立点是“死路”,则要向回走,然后搜索其它路径。其流程如图3所示。

3 程序实现

3.1 迷宫中每个点的实现

使用一个struct表示迷宫中的每个点。该结构包含了三个成员变量,分别是该点的横坐标,纵坐标和该点的值。

typedef struct MStackElem{int x;int y;int val;}MStackElem;


 

3 判断迷宫路径流程