1、数据结构与算法设计数据结构与算法设计 课程设计任务书课程设计任务书 题 目 马踏棋盘问题研究 学生姓名 学号 专业班级 数学 0901 设 计 内 容 与 要 求 【问题描述】 将马随机地放在国际象棋的 8*8 棋盘某个方格中,然后令马按走棋规则开始进行移动。马将 棋盘上的每个方格进入且只进入一次,走遍全部 64 个方格。 【软件功能】 1. 用户可以输入一个起始位置。 2. 有一个正确的起始位置后,用户可以得到一个棋盘,棋盘上的每个位置都将标有 1-64 中的某 一个数字。 3. 再输入一个起始位置后,将会得到一个新的棋盘。 4. 利用 GUI 实现简单的图形用户界面 【算法思想】 1. 由
2、键盘输入起始的 x 坐标和 y 坐标 2. 判断坐标位置是否合法,如果不合法,则提示用户重新输入,如果合法,则将坐标保存在马 类中,并且将步数记录为第 1 步,将棋盘类入栈保存。接着调用探寻下一步路径的函数。 3. 马将向可以走的方向进行尝试,如果尝试的这个位置可以行走,即马还没有走过,则记录下 此位置以及是第几步所走的位置,并入栈保存。 4. 再次调用探寻路径的函数,并且做步骤 3 中的做法。 5. 直到马将棋盘上的 64 个方格都走完,则停止调用探寻路径的函数。此时,开始输出马所走的 位置。即开始出栈。 6. 栈遵循后进先出的原则,故出栈时,首先输出的是马走的最后一个位置,此时,在棋盘上对
3、 应的位置输入所记录的步数。依次循环出栈,当栈为空时,即输出完毕,得到一章带有马所 走过的位置的棋盘。程序结束。 【提交成果】 1.“ 数据结构与算法设计课程设计任务书”一份,打印装袋; 2.“ 数据结构与算法设计课程设计报告”一份,打印装袋; 3、上面两项内容的 word 文档,通过电子邮件交到指导教师。 起止时间 2012 年 6 月 18 日 至 2012 年 7 月 1 日 指导教师签名 2012 年 6 月 18 日 系(教研室)主任签名 2012 年 6 月 18 日 学生签名 年 月 日 注明:内容限 1 页 数据结构与算法设计课程设计数据结构与算法设计课程设计 1、 程序设计说
4、明书 【设计题目】马踏棋盘问题研究 【问题描述】 将马随机地放在国际象棋的 8*8 棋盘某个方格中,然后令马按走棋规则开始进行移动。马将棋盘上的每个方格进入 且只进入一次,走遍全部 64 个方格。 【软件功能】 1. 用户可以输入一个起始位置。 2. 有一个正确的起始位置后,用户可以得到一个棋盘,棋盘上的每个位置都将标有 1-64 中的某一个数字。 3. 再输入一个起始位置后,将会得到一个新的棋盘。 4. 利用 GUI 实现简单的图形用户界面 【算法思想】 1. 由键盘输入起始的 x 坐标和 y 坐标 2. 判断坐标位置是否合法,如果不合法,则提示用户重新输入,如果合法,则将坐标保存在马类中,
5、并且将步数 记录为第 1 步,将棋盘类入栈保存。接着调用探寻下一步路径的函数。 3. 马将向可以走的方向进行尝试,如果尝试的这个位置可以行走,即马还没有走过,则记录下此位置以及是第几 步所走的位置,并入栈保存。 4. 再次调用探寻路径的函数,并且做步骤 3 中的做法。 5. 直到马将棋盘上的 64 个方格都走完, 则停止调用探寻路径的函数。 此时, 开始输出马所走的位置。 即开始出栈。 6. 栈遵循后进先出的原则,故出栈时,首先输出的是马走的最后一个位置,此时,在棋盘上对应的位置输入所记 录的步数。依次循环出栈,当栈为空时,即输出完毕,得到一章带有马所走过的位置的棋盘。程序结束。 【逻辑结构设
6、计】 由用户输入起始位置,如果,输入合法,即输入的起始位置在棋盘中,则此位置即为马开始行走的起点,以此点为 起点,以象棋中马的走法开始在棋盘中,找寻可以行走的位置,每个位置只能走一次,直到马将棋盘中的 64 个位置 全都走过之后,在棋盘上显示出马行走的轨迹;当用户在此输入一个合法的起始位置时,则可以得到一个新的棋盘。 【存储结构设计】 马的抽象数据类型: public class Horse public int step;/马行走的步数 public int x=0;/马在棋盘上的横坐标 public int y=0;/马仔棋盘上的纵坐标 public Horse()/无参构造 public int getStep() ;/获取步数 public void setStep(int step) ;/设置步数 public int getX() ;/获取x坐标 public void setX(int x) ;/设置x坐标 public int getY() ;/获取y坐标 public void setY(int y)