1 / 8
文档名称:

马踏棋盘 正式作业.doc

格式:doc   大小:269KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

马踏棋盘 正式作业.doc

上传人:mh900965 2018/2/27 文件大小:269 KB

下载得到文件列表

马踏棋盘 正式作业.doc

相关文档

文档介绍

文档介绍:数据结构与算法分析
课程设计报告

设计题目: 马踏棋盘
专业计算机科学与技术
学号
姓名

年月日
<<马踏棋盘>>
数据结构课程设计
概要设计
功能模块化分析
通过对问题描述的分析,可知马踏棋盘问题所要求实现的功能大致由三个部分组成:
⑴接收用户输入的马的起始位置;
⑵从起始位置开始在棋盘上标记马按问题描述中的行走规则访问棋盘中每个格子的顺序;
⑶输出棋盘上标记的访问顺序。
系统结构的总体设计
⑴输入模块:提示用户输入数据,接收用户输入的数据,即马的起始位置,并判断该位置是否在棋盘内。若该起始位置在棋盘内,则接着执行下一模块的功能;若该起始位置不在棋盘内,则提示用户输入无效,并要求用户再次输入;
⑵初始化模块:初始化所有的数据结构中的数据;
⑶棋盘遍历模块:采用特定算法,按照马的行走规则对棋盘进行遍历,每次访问一个格子时,要测试该格子是否在棋盘范围内,保存马的访问顺序;
⑷位置测试模块:接收格子的x和y坐标,判断该格子是否在棋盘内,然后根据该格子是否在棋盘内返回不同的信号;
⑸输出模块:将棋盘遍历模块中保存下来的讯号进行输出,输出格式遵从棋盘格式;
⑹总控模块:负责调用个处理模块,完成马踏棋盘问题的求解。
处理方式设计
针对问题和核心模块,采用深度优先遍历思想和回溯算法的非递归形式。
⑴深度优先遍历的基本思想
深度优先遍历可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问。在每次迭代的时侯,该算法紧接着处理与当前顶点邻接的未访问顶点。如果有若干个这样的顶点,可以任意选择一个顶点。凡在实际应用中,选择哪一个邻接的未访问候选顶点主要是由表示图的数据结构决定的。
⑵回溯算法的基本思想
回溯法是穷举查找技术的一个变种。它每次只构造解的一个分量,然后按照下面的方法来评估这个部分构造解。如果一个部分构造解可以进一步构造而不会违反问题的约束,我们就接受对解的下一个分量所做的第一个合法选择。如果无法对下一分量进行合法的选择,就不必对剩下的任何分量再做任何选择了。在这种情况下,该算法进行回溯,把部分构造解的最后一个分量替换为它的下一个选择。
详细设计
详细设计的主要任务是根据概要设计对每个模块的定义进行设计,以实现其功能算法和外部接口所要求的模块内部的数据结构和程序的逻辑结构。
详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。设计主要采用的工具是程序流程图。
全局数据结构
⑴dx[ ]和dy[ ]:两个长度为8的一维数组,分别存储马8个选择的方向的x位移(即行位移)和y位移(即列位移);
⑵st_chess:这是一个结构体,该结构体内有标记棋盘上该位置是否被访问过的visited整型变量,存储马的访问次序的route整型变量,马在访问该位置时的前驱位置的x坐标的prex整型变量,马在访问该位置时的前驱位置的y坐标的prey整型变量,马下次回溯到该位置时应该从哪个方向开始试探的direction变量。并生成该结构体的一个实例chess[10][10],存储棋盘上的各种标记信息。
⑶startx和starty:这是两个整型变量,表示起始位置的x坐标和y坐标,用于接收和存放用户输入的数据。
测试模块
⑴接口:接收上级模块传送的两个整型变量x和y