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

基于栈实现的迷宫问题.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于栈实现的迷宫问题

基于栈实现的迷宫问题 1、问题描述: 在一个二维阵列构成的迷宫里, 数组元素仅有0和1构成,其中 0表示可通行的路径, 1代表障碍。另外,定义左上角是迷宫的入口, 右下角是迷宫的出口, 在迷宫里面只允许上下左右四个方向行走,请找出一条通路。 2、算法基本思想: 由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中采用“栈”进行求解。 2.1、迷宫构建: 为了避免每走一步便需判断是否走出迷宫的麻烦,将所创建的迷宫用1包围起来。 2.2、位置搜索: 每到一处,总让它按上、下、左、右4个方向试探下一个位置;如果某方向可以通过,即该方向上的元素为0,则前进一步,并在新位置上继续进行搜索;如果4个方向都走不通或曾经走过,则后退一步,在原来的位置上继续试探下一位置。 每前进一步,都要进行判断:若前进到了出口处,则说明找到了一条通路;若退回到了入口处,则说明不存在通路。 3、算法运行环境: VC++6.0 4、主要函数: Mazepath函数: 求解迷宫maze中,从入口start到出口end的一条路径 若存在,返回TRUE,否则返回FALSE InitMaze函数: 创建初始矩阵 按照用户输入的数据构建0/1矩阵,并在矩阵四周添加一圈1作为围墙。 Pass函数: 判断当前节点能否通过。 FootPrint函数: 对于走过的节点用 * 进行标记。 MarkPrint函数: 对于不能通过的节点用 # 进行标记。 Nextpos函数; 返回当前节点的下一结点,对应东、西、南、北四个方向。 Printmaze 函数: 打印迷宫信息,存在的通路用 * 表示。 5、算法举例: 5.1、输入的矩阵: 运行结果: 5.2、输入的矩阵: 运行结果: 没有找到通路 算法复杂度分析:(n为迷宫的行数,m为迷宫的列数) 走迷宫O(n*m*2)。

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档