- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
迷宫问题课程设计报告
目	录
第一章: 设计问题描述与分
析
 1
1.1. 课程设计内
容
 1
1.2.	问	题	分析 
1
 1
功能实
现
 2
运行环
境
 3
第二章: 算法设计与流程
图
 4
主函数的流程
图
 4
概要设
计
程序设计综合课程设计
程序设计综合课程设计
 5
详细设
计
 6
2.4.1.节点类型和指针类
2.4.1.
型
 6
迷宫的操2.4.2.
迷宫的操
作
 6
生成迷
宫
6
6
打印迷宫矩阵与字符图
形
.7
( 3 ) 迷 宫 求 解 路 由 求 解 操
作
7
(4)打印迷宫通路坐
标
8
(5)输出迷宫通路的字符图
形
..8
主	函
主	函
数
 9
第三章:调试分
析
 10
第	四	章	:	使	用	说
明
明
11
11
第	五	章	:	测	试	结
果
果
12
12
附录1
 19
附	录
2
19
19
程序设计综合课程设计
程序设计综合课程设计
1
1
第一章:设计问题描述与分析
课程设计内容:
该系统是由 C 语言编写的生成一个 N×M(N 行 M 列)的迷宫,完成迷宫的组织和存储,并实现迷宫路由算法。基本要求 1、 N 和 M 是用户可配置的,缺省值为 50 和 50。2、迷宫的入口和出口分别在左上角和右下角。
提示:(1)可以使用二维数组 maze[M+2][N+2]表示迷宫,其中 M,N 为迷宫的行、列数,当元素值为 0 时表示该点是通路,当元素值为 1 时表示该点是墙。老鼠在每一点都有 4 种方向可以走,可以用数组 move[4]来表示每一个方向上的横纵坐标的偏移量,可用另一个二维数组mark[M+2][N+2]记录节点的访问情况。(2)可以选用深度优先算法或广度优先算法实行,迷宫可由自动或手动生成。测试用例应该包含有解迷宫和无解迷宫。
问题分析
本程序要求实现迷宫问题的相关操作,包括迷宫的组织和存储,并实现迷宫路由算法(即查找迷宫路径)。程序所能达到的:具体包括迷宫的建立,迷宫的存储(迷宫由自动生成或手动生成),迷宫中路径的查找
迷宫是一个矩形区域,迷宫存在一个入口和一个出口,其内部包含了不能穿越的墙或者障碍。迷宫的建立即是建立这样一个迷宫矩阵,用于存储迷宫信息,包括可穿越的路和不可穿越的墙或者障碍,分别用 0 表示通路,1 表示障碍。对于迷宫矩阵,用 m ×n 的矩阵来描述,m 和 n 分别代表迷宫的行数和列数。这样,则迷宫中的每个位置都可以用其行号和列号来指定。从入口到出口的路径是由一组位置构成的。每个位置上都没有障碍,且每个位置(第一个除外)都是前一个位置的上、下、  左、右的邻居。
为了描述迷宫中位置(i ,j)处有无障碍,规定,当位置(i ,j)处有一个障碍时,其值为 1,否则为 0.这样迷宫就可以用 0、1 矩阵来描述,在构造矩阵时,为了操作方便会将矩阵四周置为 1(不通)。
程序设计综合课程设计
程序设计综合课程设计
2
2
对于查找迷宫路由问题
首先,考察,迷宫的入口位置,如果该位置就是迷宫出口,则已经找到了一条路  径,搜索工作结束。否则,考察其上、下、左、右位置上的邻居是否是障碍,若不是就移动到这个相邻位置上,然后对于这个位置开始搜索通往出口的路径。如果不成功,就选择另一个相邻的位置,并从它开始搜索路径。为防止搜索出现重复,则将已搜索过的位置标记为 1。同时为保留过搜索的痕迹,在考察相邻位置之前,将当前位置保存在一个堆栈中,如果所有相邻的非障碍位置均被搜索过,且未能找到通往出口的路径,则表明不存在从入口到出口的路径。且对于此,实现的是深度优先遍历算法,如果查找到路径,则为从入口到出口的路径。
下面实现如何利用堆栈实行深度优先遍历算法进行迷宫最短路径的查找。  以矩阵 1 1 1 1 1 1 1
1 0 0 1 0 1 1
1 1 0 0 1 0 1
1 1 0 0 0 1 1
1 0 0 1 0 0 1
1 1 1 1 1 1 1
首先,将位置(1,1)放入堆栈中,从它开始搜索,标记。由于其只有一个非障碍位置,所以接下来移动到(1,2),防止稍后的搜索再经过这个位置。
从(1,2)移动到(2,2),放入堆栈中,(2,2)存在(2,3)、(3,2)两个可移动位置。标记已被搜索过,对于每一个非障碍位置,它的相邻非障碍节点均入队列,  实现了深度优先遍历算法。所以如果存在路径,则从出口处节点的位置,逆序则可以找到其从出口到入口的通路。实现了查找路径。
功能实现:
1、数据输入形式和输入值的范围:生成迷宫时可选择手动或者自动生成;手
程序设计综合课程设计
程序设计综合课程设计
 PAGE 
 PAGE 3
动输入迷宫矩阵时以 0 表示无障碍为通路,1 表示该点有障碍为墙。所有输入中, 元素的值均为整数。
2、结果的输出形式:当完成迷宫生成
                
原创力文档
                        

文档评论(0)