- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE
PAGE1
课程设计报告文档
题目:罗密欧与朱丽叶迷宫求解问题
一.任务的描述
1.目标:1、对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最少转弯道路
2、程序能够演示一条罗密欧找到朱丽叶的路线过程等
2.任务描述:?罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个m×n的
迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n
个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任?
何位置均可沿8个方向进入未封闭的房间。罗密欧位于迷宫的。
(p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的
路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,
而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方
向算作转弯一次。请设计一个算法帮助罗密欧找出这样一条路。
3.运行环境:硬件:装有windows操作系统的计算机
软件:VisualC++6.0
4.条件与限制:实验中的迷宫数组不能太大,否则运行时时间复杂度会很大。
二.任务设计
1.系统流程图:
输入m,n,k,x,y,x1,y1-1-dirsbest-1000count-0
输入m,n,k,x,y,x1,y1
-1-dirsbest-1000count-0
dep==m*n-kx==x1y==y1dirs=best
dep==m*n-kx==x1y==y1dirs=best
是否否
dep==m*n-k||x==x1y==y1||dirsbest是否dirsbest是否
dep==m*n-k||x==x1
y==y1||dirsbest
是否
dirsbest
是否
count+1-count
count+1-
count
best=dirs;
count=1;
1-i
1-j
bestb[i][j]=
board[i][j]
j+1-j
直到j=n
i+i-i
直到i=m
1-i
1-i
p=x+dx[i]
q=y+dy[i]
x0
x=m
y0
y=n
board[x][y]==0
是
dirs+1-dirs
直到i=8
return
return
return
board[p][q]=dep+1di!=i
board[p][q]=dep+1
di!=i
dirs+1-dirs
直到i=8
di!=i
是
dirs-1-dirs
board[p][q]=0;
输出
输出best,count
**bestb
2.函数的划分:
(1)函数1:boolstepok(intx,inty)判断是(x,y)否越界。
(2)函数2:voidsave()保存一条转弯最少的路径
(3)函数3:voidsearch(intdep,intx,inty,intdi)在当前位置(x,y)按照八个方向搜索,dep用于标记已经走过的房间数,di表示八个方向。
(4)函数4:voidmain()主函数初始化迷宫数组,并调用search函数输出一条迷宫路线。
3.函数之间的关系:主函数调用search函数,search函数调用stepok和save函数完成搜索。如下图
:
main函数
save函数
调用search函数递归调用search函数
调用stepok函数
输出结果
四.编写代码
1.问题1
(1)问题描述:程序中关于迷宫的参数较多使得问题复杂难懂,编写时也容易使用混淆。
(2)解决办法:通过多次手动走迷宫对每一个参数都有深入的理解,这样使用时才
文档评论(0)