首页 迷宫问题

迷宫问题

举报
开通vip

迷宫问题nullnull迷宫问题迷宫问题迷宫问题主要内容 1.问题分析 2.递归算法 3.非递归算法1.问题分析1.问题分析1.问题分析1.问题分析迷宫求解 这是一个找出口的问题。自相似性表现在什么地方? 每走一步的探测方式。 由于计算机很傻,只能通过穷举方式找出口,怎么找法?沿着一个方向走下去,如果走不通,则换个方向走;四个方向都走不通,则回到上一步的地方,换个方向走;依次走下去,直到走到出口。 1.问题分析1.问题分析描述迷宫: 1、设置迷宫为二维数组,数组的值是 ...

迷宫问题
nullnull迷宫问题迷宫问题迷宫问题主要内容 1.问题分析 2.递归算法 3.非递归算法1.问题分析1.问题分析1.问题分析1.问题分析迷宫求解 这是一个找出口的问题。自相似性表现在什么地方? 每走一步的探测方式。 由于计算机很傻,只能通过穷举方式找出口,怎么找法?沿着一个方向走下去,如果走不通,则换个方向走;四个方向都走不通,则回到上一步的地方,换个方向走;依次走下去,直到走到出口。 1.问题分析1.问题分析描述迷宫: 1、设置迷宫为二维数组,数组的值是 -1:代表墙 0: 代表未走过的路径 1:代表走不通的路径 2:代表路径 1.问题分析1.问题分析1.问题分析1.问题分析2、设置搜索方向顺序是东、南、西、北(x,y)(x-1,y)(x,y-1)(x,y+1)(x+1,y)东北2.递归算法2.递归算法明确递归函数的意义 每一步的走法 int next(int arr[][10],Point cur, Point end); 迷宫求解迷宫求解每走一步: 1、如果当前位置=出口,结束 2、否则: 假设当前位置为路径; 如果东面未走过:向东走一步 如果南面未走过:向南走一步 如果西面未走过:向西走一步 如果北面未走过:向北走一步 设置当前位置走不通,回溯nullint next(int arr[][10],Point cur,Point end) { if((cur.x==end.x) && (cur.y==end.y)) return 1; else { arr[cur.x][cur.y] = 2; if(arr[cur.x+1][cur.y]==0) //东 { Point t; t.x =cur.x+1; t.y=cur.y ; if(next(arr,t,end)) return 1; } if(arr[cur.x][cur.y+1]==0) //南 { Point t; t.x =cur.x; t.y=cur.y+1; if(next(arr,cur,end)) return 1; } … //西 …//北 arr[cur.x][cur.y] = 1; return 0; }3.非递归算法3.非递归算法程序步骤: 1、当前位置入栈 2、判断下一步是否可通,“可通”则返回步骤1; “不可通”,换方向继续探索; 3、若四周“均无通路”,则当前位置出栈,从前一位置换方向搜索。 nullvoid MasePath(int arr[][10],Point start,Point end) { Stack PointStack; Point P=start; arr[P.x][P.y] = 2; do{ PointStack.Push(P); if (arr[P.x][P.y+1]==0) arr[P.x][++P.y] = 2; else if (arr[P.x+1][P.y]==0) arr[++P.x][P.y] = 2; else if (arr[P.x][P.y-1]==0) arr[P.x][--P.y] =2; else if (arr[P.x-1][P.y]==0) arr[--P.x][P.y] = 2; else { P = PointStack.Pop(); arr[P.x][P.y] = 1; P = PointStack.Pop(); } }while ((P.x!=end.x) || (P.y!=end.y)); }辅助函数辅助函数//打印迷宫 void PrintPath(int arr[][10]) { for (int i=0;i<10;i++) { for (int j=0;j<10;j++) { if (arr[i][j]==-1) cout<<"■"; else if (arr[i][j]==2) cout<<" *"; else cout<<"□"; } cout<
本文档为【迷宫问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_590865
暂无简介~
格式:ppt
大小:146KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2010-11-03
浏览量:21