迷宫问题非递归求解

迷宫问题非递归求解

ID:16492590

大小:196.50 KB

页数:9页

时间:2018-08-10

迷宫问题非递归求解_第1页
迷宫问题非递归求解_第2页
迷宫问题非递归求解_第3页
迷宫问题非递归求解_第4页
迷宫问题非递归求解_第5页
资源描述:

《迷宫问题非递归求解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、东华理工大学——迷宫问题非递归求解题目:迷宫问题非递归求解一、需求分析迷宫问题非递归求解,要求实现以下任务:(1)、可以输入一个任意大小的迷宫数据;(2)、用非递归的方法求出一条走出迷宫的路径;(3)、将路径输出;二、总体设计对于迷宫问题的非递归求解,我采用二维指针即指向指针的指针来保存迷宫,采用顺序栈来探寻迷宫路径,最后将路径输出。寻找一条走出迷宫的路径时,当下一方向可以走时(为0时),就入栈,若下一方向不可走时就退栈,再次试探另一方向是否可以走,可走再入栈,到达新的一点时依此反复。最后就可以得到迷宫的路径。将路径输出时则采用退栈方式,依次输出路径。三、详细设计-9-东华

2、理工大学——迷宫问题非递归求解创建迷宫Create()寻找路径find()选择1选择2选择3重新输入入口出口重新创建迷宫恢复迷宫结束恢复迷宫开始四、实现部分//maze.h头文件#include#include#include#includeusingnamespacestd;typedefstruct{intx,y,d;}Datetype;typedefstruct{intx,y;intpre;}SqType;typedefstackstack_int;-9-东华理工大学——迷宫问题非

3、递归求解classmaze{public:voidprint(SqTypesq[],int);voidagain(int**maze,intm,intn);voidfind(int**maze,inta,intb,intm,intn);voidcreate();private:intfront,rear;};classStack{public:voidPush();intPop();Stack();~Stack();private:inttop;intdata[1000];};//maze.cpp成员函数#include"maze.h"#include"iostream"v

4、oidmaze::print(SqTypesq[],int){inti;i=rear;do{cout<<"("<

5、){Datetypemove[4]={{0,1},{1,0},{0,-1},{-1,0}};stack_intst;Datetypetemp;intx,y,d,i,j;if(maze[a][b]==1){cout<<"进口输入有误。";return;}temp.x=a;temp.y=b;temp.d=-1;st.push(temp);while(!st.empty()){temp=st.top();x=temp.x;y=temp.y;d=temp.d+1;while(d<4){i=x+move[d].x;j=y+move[d].y;if(maze[i][j]==0){tem

6、p.x=x;temp.y=y;temp.d=d;st.push(temp);x=i;y=j;maze[x][y]=-1;if(x==m&&y==n){cout<<"迷宫路径为:"<

7、voidmaze::create(){intm,n,i,j,l,c,d;cout<<"请输入迷宫的行数列数:"<>m>>n;int**maze=newint*[m];for(i=0;i<=m+1;i++)maze[i]=newint[n];cout<<"请输入迷宫:"<>maze[i][j];A:if(maze[i][j]!=0&&maze[i][j]!=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。