c语言骑士游历优化算法,骑士游历、骑士巡游(C语言)课程设计.doc

存档资料 成绩:

华东交通大学理工学院

课 程 设 计 报 告 书

所属课程名称 数据结构

题 目   骑士游历

分 院

专业班级

学  号

学生姓名 黄锦辉

指导教师

2012 年 6月 15 日

目 录

第1章 课程设计内容及要求1

第2章 功能的说明与实现2

2.1 程序功能模块2

2.2 程序功能模块图2

第3章 程序功能的具体实现3

3.1 主函数main()的执行流程3

3.2 系统测试与调试3

第4章 源代码6

第5章 课程设计心得9

第6章 参考文献10

第1 章 课程设计内容及要求

运行程序设置一个8行8列的棋盘,在国际象棋的原则下,任意的输入一个存在的点,这个被视为骑士(马)的初始位置,让马通过这个点走完棋盘上的每一个点,并且不重复。在对已经走过的路线里,采用标志矩阵进行记录。标志矩阵的引入利用了数据的线性存储。这个称为骑士游历算法。

本课程设计所采用的计算机语言是C语言,所使用的软件是使用比较普遍的Microsoft Visual C++ 软件。

第2章 功能的说明与实现

2.1 程序功能模块

总共分为三个模块,分别是创建棋盘模块,位置设置模块和显示结果模块

1.创建棋盘模块:此时我们使用矩阵设计一个模拟的棋盘。其关键代码如下:

int f[11][11] ; /*定义一个矩阵来模拟棋盘*/

int adjm[121][121]; /*于上述棋盘,标志矩阵*/

void creatadjm(void) /*创建标志矩阵函数声明*/

void mark(int,int,int,int); /*将标志矩阵相应位置置1*/

void travel(int,int); /*巡游函数声明*/

int n,m; /*定义矩阵大小及标志矩阵的大小*/

2.位置设置模块:输入任意一个在8行8列棋盘中的一个点,其格式表示为:m n (m表示行,n表示列)。

3.显示结果模块:将起始位置设定好了,将在这个模拟棋盘中用数字显示马走过的每一步。

2.2 程序功能模块图

总共有三个模块,如下图所示:

图2.2—1

第3章 程序功能的具体实现

3.1 主函数main()的执行流程

1.运行了主函数main()之后,马上执行了菜单,输入了行列数, 在这里我们采用的是8行8列的棋盘

2.执行流程图,如下所示

图3.1—1

3.2 系统测试与调试

1.程序代码的输入和运行

新建C文件并输入代码到工作界面当中,仔细检查,运行代码,如下图所示,图3.2-1表示程序的输入和运行,图3.2-2表示运行出错:

图3.2—1

图3.2—2

2.程序代码的调试

经过老师和同学的讨论,自己上网查阅资料,修改了程序出错的地方,是由于自己的粗心,忘记写入标点符号,这才导致了错误,然后又仔细的检查了一遍程序,程序运行成功,没有错误了。

图3.2-3

3 程序的显示结果

在命令窗口中输入了棋子的不同起点,运行都成功了。如下图所示:

图3.2-4 以(2,3)为起点

图3.2-5 以(4,5)为起点

图3.2-6 以(6,6)为起点

第4章 源代码

#include

int f[11][11] ; /*定义一个矩阵来模拟棋盘*/

int adjm[121][121];/*标志矩阵,即对于上述棋盘,依次进行编号*/

void creatadjm(void); /*创建标志矩阵函数声明*/

void mark(int,int,int,int); /*将标志矩阵相应位置置1*/

void travel(int,int); /*巡游函数声

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
骑士游历问题是一个经典的算法问题,其涉及到如何在国际象棋棋盘上使得骑士能够遍历所有格子,每个格子只能经过一次。 解决这个问题的一种方法是通过使用深度优先搜索(DFS)算法。DFS算法是一种递归算法,用于遍历所有可能的路径直至找到目标解。 在C语言中,可以通过二维数组来表示棋盘,使用递归函数来实现DFS算法。首先,需要定义一个8x8的棋盘,初始值为0表示未经过。接着,定义一个骑士可能的移动方式,可以在棋盘上向上、向下、向左、向右以及对角线移动。然后,从棋盘的某个起始位置开始,向下一个可能的位置进行递归搜索,直到找到所有解。 在递归函数中,需要判断当前位置是否有效,即是否在棋盘范围内且未经过。如果有效,将当前位置标记为已经过,并继续探索下一个位置。如果无效,则回溯到上一个位置,并且将当前位置恢复为未经过。 为了保证骑士能够遍历所有格子,可以设置一个计数变量,每遍历一个位置就加一,直到计数值等于棋盘大小。当计数值等于棋盘大小时,表示找到了一种遍历方案,结束程序,并输出结果。 对于骑士游历问题C语言视频讲解,可以结合图形化界面展示程序运行过程,以便更直观地理解算法的实现过程。视频中可以包括:问题的介绍与背景知识讲解、算法的具体实现方法、程序运行演示以及最终输出结果。同时,可以提供一些优化的思路和实现技巧,例如剪枝、迭代加深等,以提高程序的效率和性能。 通过视频讲解,可以让学习者更加深入地了解骑士游历问题的解决思路,并且能够动手实现相关的算法。同时,视频的交互性也能够方便学习者向讲解者提问或者参与讨论,进一步加深对问题的理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值