网站大量收购独家精品文档,联系QQ:2885784924

迷宫问题求解(最终版).doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迷宫问题求解 设计题目: 迷 宫 问 题 求 解 班 级 : 计科一班 学 号 : 222011321210151 (檀国林) 222011321210137 (蒲德垣) 222011321210169 (谢 甜) 222011321210116 (陈 甫) 完成日期: 2013/04/20 小组分工情况: 檀国林负责整个递归算法求解迷宫的分析及实现,谢甜跟蒲德垣负责非递归算法求解迷宫分析及实现,实验报告由谢甜跟檀国林共同完成。 打分:檀国林 86 B 蒲德垣 75 C 谢甜 95 A 陈甫 65 D 实验目的和要求 实践用“穷举求解”(回溯)方法求解迷宫问题; 掌握的栈的操作方法; 编写实验报告; 实验内容 1. 用“穷举求解”(回溯)方法求解迷宫问题 2. 用递归遍历的方法求解迷宫问题 实验步骤 问题分析 1.1用递归算法求解迷宫 计算机解迷宫时,通常用的是“穷举求解”的方法。 即从入口出发,顺某一方向(逆时针方向)向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路返回,显然需要用一个先进后出的结构来保存从入口到当前位置的路径。 其中的关键问题如下: 表示迷宫的数据结构 typedef int Status; typedef struct{ //坐标点结构体 int y; //每个可通的行坐标 int x; //每个可通的列坐标 }PosType; typedef struct{ int ord; //通道块在路径上的序号 int di; //从此通道块走向下一通道块的方向 PosType seat; //通道块在迷宫中的坐标位置 }MazeNode; //迷宫节点 typedef struct{ //用于存储迷宫的路径 PosType coor[INITSIZE]; int top; }Postion; 试探方向 ?走迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按东、南、西、北、四个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果某方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条通路;若退回到了入口处,则说明不存在通路。? 栈的设计 int InitStack(Stack *); //初始化栈 int InitStack1(Postion *); int StackEmpty(Stack *); //判断栈是否为空 int StackEmpty1(Postion *); int StackIsFull(Stack *); //判断栈是否满了 int StackIsFull1(Postion *); //判断栈是否满了 int Push(Stack *s,MazeNode m); //压栈 int Push1(Postion *,PosType); int Pop(Stack *s,MazeNode *m); //出栈 int Pop1(Postion *,PosType *); int DestroyStack(Stack *s); //撤销栈 防止重复到达某点,避免发生死循环 通过对已经访问过的点做标记,可以有效的防止重复的访问某一点,避免出现死循环,同时能够提高算法执行的效率。 1.2用递归算法求解迷宫 用递归算法求解迷宫的关键是编写求解迷宫的递归函数。在递归函数中,每次访问了结点就将其位置上的数置为-1作为标记,表示当前结点可走且已经走过。接下来看当前结点是否是终点,如果是终点则打印当前所走过的迷宫轨迹,否则继续按顺时针方向试探下一步。最后,在递归函数退出前要让先前所走过的标记要恢复为初始状态,以免干扰后面递归函数执行时混淆。 问题求解

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档