2.9迷宫问题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.9迷宫问题

迷宫问题 一.实验目的 [问题描述: 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: 实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 编写递归形式的算法,求得迷宫中所有可能的通路; 以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口 实现提示: 计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(m,n)。为处理方便起见,可在迷宫的四周加一圈障碍。对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。 3、主函数 三.实验步骤 程序由主函数开始,首先,定义一个二维数组迷宫。选择开始坐标点,然后,开始入栈,利用各个位置的判断循环建立结点,记录各个位置的数据,若走进死胡同则退栈,并且判断是否栈空,找到路径并到达出口后将栈倒置,使其按从入口到出口的顺序输出,之后调用迷宫图案输出函数,使其按要求输出。 四.实验的结果及分析。 1、起点(1 ,1) 2、起点(4 , 1) 五.实验中出现的问题、解决方法和心得体会 主要针对的知识还是对栈和队列知识的应用,开始对栈的构造不清楚,且定义的出栈函数繁琐,定义的各个函数均有逻辑上的小错误。好在后来老师有在数据结构课上简单讲了一下这个算法,所以有了设计的思路。 广东工业大学实验报告 自动化 学院 网络工程 专业(1) 班 学号 3111001299 姓名 刘源彬 成绩评定_______ 教师签名 许亮 实验 2.9 题目 迷宫问题 课程名称 数据结构A 8 struct Stack //构造栈 { int Maze_x,Maze_y,Maze_z; //定义迷宫X,Y坐标,z方向 Stack * next; //定义栈指针 }; else if(a[i+1][j]==0) //判断下边是否可行 { push(i,j,2); i++; a[i][j] = 2; //标记走过的位置 } else if(a[i][j-1]==0)//判断左边是否可行 { push(i,j,3); j--; a[i][j] = 2; //标记走过的位置 } else if(a[i-1][j]==0) //判断上边是否可行 { push(i,j,4); i--; a[i][j] = 2; //标记走过的位置 } else //四个方向都不可行,退栈 { int e1,e2; Stack *p; p = ps; ps=ps-next; e1=p-Maze_x; e2=p-Maze_y; a[e1][e2]=3; //标记走过的死胡同坐标 delete p; //删除栈顶元素 i = ps-Maze_x; j = ps-Maze_y; if(ps==NULL) //判断栈空否 { coutno path!endl; exit(1); } } } #includeiostream #includeiomanip using namespace std; Stack *ps; //链头指针 void Pop() //出栈函数 { Stack *p; p = ps; ps=ps-next; delete p; } void push(int x,int y,int z) //进栈 函数 { Stack *t; t = new Stack; t-Maze_x = x; t-Maze_y = y; t-Maze_z = z; t-next = ps; ps = t; } void Mazepath(int a[][10],int i,int j) //迷宫路线寻找 函

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档