下:
ftypedefstructdirecti
trcpath
umdir这里r表示棋盘的行数,c表示棋盘的列数,path
um用来标志可走方向数。
(3)探寻路径函数Fi
dwayFi
dway函数功能介绍:定义一个结点类型数组,用于存放8个下一步可踩入结点的信息;其中通过一个while循环来对各个方向进行探寻,并通过一个for循环语句寻找当前位置的八个方向中的可走方向数最少的方向作为新的方向,期间调用path
um函数,该函数功能是记录所有下一个可踩入结点的可执行路径数目);选择下一个结点中路径最少的结点为下一个踩入的结点;在进入下一个踩入点前,先保存该结点的信息并输出,然后依次寻找下一个结点;(4)主函数在mai
函数中,我们先输入马在棋盘上的一个初始位置(这里表示坐标的两个数必须在大于等于0并且小于等于7),然后通过调用Fi
dway函数,可以以三维坐标的形式输出每次马所走的位置的横纵坐标和此时的序号数,此时boardij数组已经记下了马所走的路径,最后通过一个for循环语句将马走,的路径以棋盘的形式输出。就解决了整个马踏棋盘问题。
2主要流程图
主程序模块
输入的初始位置是否正确否是起始坐标函数块
f探寻路径函数块
输出路径函数块块结束
3功能模块化分析
通过对问题描述的分析,可知马踏棋盘问题所要求实现的功能大致由三个部分组成:⑴接收用户输入的马的起始位置;⑵从起始位置开始在棋盘上标记马按问题描述中的行走规则访问棋盘中每个格子的顺序;⑶输出棋盘上标记的访问顺序。
4系统结构的总体设计
⑴输入模块:提示用户输入数据,接收用户输入的数据,即马的起始位置,并判断该位置是否在棋盘内。若该起始位置在棋盘内,则接着执行下一模块的功能;若该起始位置不在棋盘内,则提示用户输入无效,并要求用户再次输入;⑵初始化模块:初始化所有的数据结构中的数据;⑶棋盘遍历模块:采用特定算法,按照马的行走规则对棋盘进行遍历,每次访问一个格子时,要测试该格子是否在棋盘范围内,保存马的访问顺序;⑷位置测试模块:接收格子的x和y坐标,判断该格子是否在棋盘内,然后根据该格子是否在棋盘内返回不同的信号;⑸输出模块:将棋盘遍历模块中保存下来的讯号进行输出,输出格式遵从棋盘格式;⑹总控模块:负责调用个处理模块,完成马踏棋盘问题的求解。
f三、详细设计
1设计基本步骤:
1)定义一个88的数组,用于存放每次踩入的结点位置;2)获取第一个踩入点;3)调用fi
dway函数Fi
dway函数功能介绍:定义一个结点r