电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

利用栈实现迷宫的求解VIP免费

利用栈实现迷宫的求解_第1页
1/9
利用栈实现迷宫的求解_第2页
2/9
利用栈实现迷宫的求解_第3页
3/9
. . 利用栈实现迷宫的求解一、 要解决的问题 :以一个 m*n 的长方阵表示迷宫, 0 和 1 分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫, 求出一条从入口到出口的通路,或得出没有通路的结论。二:算法基本思想描述: 用一个字符类型的二维数组表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁) 。二维数组的第0 行、第 m+1 行、第 0 列、第 m+1 列元素全置成“1”, 表示迷宫的边界;第1 行第 1 列元素和第m 行第 n 列元素置成“ 0”, 表示迷宫的入口和出口走迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按东、南、西、北4 个方向顺序试探下一个位置;用二维数组move 记录 4 个方向上行下标增量和列下标增量,则沿第 i 个方向前进一步,可能到达的新位置坐标可利用move 数组确定:Px=x+move[i][0] Py=y+move[i][1] 如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果 4 个方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。三:设计:1:数据结构的设计:(1)定义三元数组元素的结构typedef struct MazeDirect { int Dx; //行标int Dy; //列标int direct; //走到下一个坐标点的方向}MazeDirect; (2)定义链表节点的结构组成typedef struct LinkNode { elemtype data; //数据域struct LinkNode *next; //指针域}LinkNode; (3)定义链栈的头指针typedef struct { . . LinkNode *top; //栈的头指针}LinkStack; (4)移动数组结构的定义typedef struct { int x,y;//x 为行标, y 为列标}Direction_increm; 2:算法的设计:【1】迷宫图的设计设迷宫为 m 行 n 列,利用 maze[m][n] 来表示一个迷宫, maze[i][j]=0或 1; 其中:0 表示通路,1 表示不通,当从某点向下试探时,中间点有4 个方向可以试探, (见图)而四个角点有2个方向,其它边缘点有3 个方向,为使问题简单化我们用maze[m+2][n+2] 来表示迷宫,而迷宫的四周的值全部为1。这样做使问题简单了,每个点的试探方向全部为4,不用再判断当前点的试探方向有几个,同时与迷宫周围是墙壁这一实际问题相一致。假设有 6 行 8 列的迷宫,如下图为maze[8][10] 构造的迷宫1 1 1 1 1 1 1 1 1 1 1 0 1 1 10 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

利用栈实现迷宫的求解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部