版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构上机报告(迷宫)迷宫求解小组成员问题提出:利用栈结构实现迷宫求解问题。迷宫求解问题如下:
心理学家把一只老鼠从一个无顶盖的大盒子的入口赶进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口,测试算法的迷宫如下图所示:问题分析及算法设计:1.迷宫中有障碍物的地方设置为1,没有障碍物的地方设置为0;2.设起点下标为(1,1),终点下标为(10,8);3.从起点出发(起点入栈),栈中存放走过的路径(坐标);4.每次取栈顶元素,在其上下左右中选一个能走通的且没有走过的点入栈;5.若该点为终点;则结束,输出路径;6.若上下左右都不通或已走过,则出栈,栈空,则走不通。程序设计:用户手册:运行程序;根据提示,在“请输入迷宫矩阵,<10*10>:”后输入迷宫矩阵;按enter键,根据提示,在“请输入起始点<0~9>:”后输入起始点;按enter键,根据提示,在“请输入结束点<0~9>:”后输入结束点;按enter键,即可得出最短路径的长度和最短路径的坐标表示;关闭操作窗口,结束运行。附图例:调试报告:附录:程序代码:#include<iostream>usingnamespacestd;structPoint{ intx; inty; intpre;};voidCopy(Point&a,Point&b){ a.x=b.x; a.y=b.y; a.pre=b.pre;}structQueue{ Pointp[100]; inthead=0; inttail=0;};voidAppend(Queue&d,Pointp){ d.p[d.tail].x=p.x; d.p[d.tail].y=p.y; d.p[d.tail].pre=p.pre; d.tail++;}voidDelete(Queue&d,Point&a){ Copy(a,d.p[d.head]); d.head++;}structStack{ Pointq[100]; inthead=0;};voidpush(Stack&s,Pointp){ s.q[s.head].x=p.x; s.q[s.head].y=p.y; s.head++;}voidpop(Stack&s){ s.head--; cout<<"("<<s.q[s.head].x<<","<<s.q[s.head].y<<")"<<endl;}classMaze{public: Pointp0; Pointpn; intm[10][10]; inti=0; intl;public: voidInitp0(); voidInitpn(); voidpdp0pn(); voidInitM(); voidkz(Queue&Q,Pointa);};voidmain(){ intu=0; QueueQ; StackS; MazeM; M.InitM(); M.Initp0(); Pointa=M.p0; M.Initpn(); Append(Q,a); while(1) { if(u==1) break; M.l=Q.tail; while(Q.head<M.l) { Delete(Q,a); if(a.x==M.pn.x&&a.y==M.pn.y) { u=1; break; } else { M.kz(Q,a); M.m[a.x][a.y]=1; } } M.i++; } cout<<"最短路径的长度为:"<<M.i-1<<endl; cout<<"最短路径为:"<<endl; while(a.pre>=0) { push(S,a); a=Q.p[a.pre]; } push(S,M.p0); while(S.head>0) { pop(S); }}voidMaze::Initp0(){ cout<<"请输入起始点(0~9):"<<endl; cin>>p0.x>>p0.y;}voidMaze::Initpn(){ cout<<"请输入结束点(0~9):"<<endl; cin>>pn.x>>pn.y;}voidMaze::InitM(){ cout<<"请输入迷宫矩阵(10*10):"<<endl; for(inti=0;i<10;i++) { for(intj=0;j<10;j++) cin>>m[i][j]; }}voidMaze::pdp0pn(){ if(m[p0.x][p0.y]==1||m[pn.x][pn.y]==1) cout<<"输入的点不符合条件。"<<endl;}voidMaze::kz(Queue&Q,Pointa){ Pointb; b.pre=Q.head-1; if(m[a.x-1][a.y]!=1&&a.x-1>=0) { b.x=a.x-1; b.y=a.y; Append(Q,b); } if(m[a.x+1][a.y]!=1&&a.x+1<=9) { b.x=a.x+1; b.y=a.y; Append(Q,b); } if(m[a.x][a.y-1]!=1&&a.y-1>=0) { b.x=a.x; b.y=a.y-1; Append(Q,b); }if(m[a.x][a.y+1]!=1&&a.y+1<=9) { b.x=a.x; b.y=a.y+1; Append(Q,b); }}/*11111111111000110011101001100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年枣庄市北坛医院(枣庄市立第四医院)急需紧缺人才引进(3名)笔试模拟试题及答案解析
- 2026陕西省商贸技工学校兼职教师招聘笔试参考题库及答案解析
- 2026广东江门市中心医院劳务派遣人员招聘9人笔试参考题库及答案解析
- 2026上海市第一妇婴保健院中层干部岗位院外招聘7人笔试备考题库及答案解析
- 2026上海AI实验室访问学者计划全球招募笔试参考题库及答案解析
- 2026年山东海事职业学院单招职业适应性测试题库有答案详细解析
- 2026届上海市协和双语校初三最后一模(5月月考)英语试题含解析
- 江苏省盐都市盐都初级中学2026届初三学情诊断测试英语试题含解析
- 2026年上海市崇明县初三下学期周末练习2英语试题含解析
- 母亲的微笑感恩的力量写人12篇范文
- 医嘱规范开具培训课件
- 乡风文明建设课件
- 毕业设计(论文)-水下4自由度抓取机械臂设计-scara机器人
- HSK4标准教材课件
- 云南省中药材产地加工(趁鲜切制)指导原则、品种目录、风险提示清单、中药材质量标准制定指导原则
- 金融风控模型建设及管理规范
- T/CSBME 070-2023计算机断层成像(CT)临床图像质量评价
- 《陶瓷工艺概览:课件中的釉料组成与特性》
- DB31T 1502-2024工贸行业有限空间作业安全管理规范
- 成都环境集团笔试考什么
- 2025年初级会计师考试真题试题及答案
评论
0/150
提交评论