课程名称:数据结构与算法设计。
设计题目:algorithm gossip: 骑士走棋盘。
院系:信息工程学院。
学号。姓名。
设计时间:2015 6 3
指导老师:1.题目分析。
骑士旅游(knight tour)在十八世纪初倍受数学家与拼图迷的注意,它什么时候被提出已不可考,骑士的走法为西洋棋的走法,骑士可以由任一个位置出发,它要如何走完[所有的位置?解法骑士的走法,基本上可以使用递回来解决,但是纯綷的递回在维度大时相当没有效率,一个聪明的解法由 warnsdorff在1823年提出,简单的说,先将最难的位置走完,接下来的路就宽广了,骑士所要走的下一步,「为下一步再选择时,所能走的步数最少的一步。,使用这个」方法,在不使用递回的情况下,可以有较高的机率找出走法(找不到走法的机会也是有的)。
2.系统设计。
for(m=2;m<=总步数;m++)
测试下一步可以走的八个方向,记录可停留的格数count。
if(count==0)
游历失败。else if(count==1)下一步只有一个可能。
else找出下一步的出路最少的格子。
如果出路值相同,则选第一个遇到的路。
走最少出路的格子,记录骑士的新位置。
3.系统实现。
#include <>
int board[8][8] =
int main(void)
int startx, starty;
int i, j;
printf("输入起始点:")
scanf("%d %d", startx, &starty);
if(tr**el(startx, starty))elsefor(i = 0; i < 8; i++)putchar('');
return 0;
int tr**el(int x, int y)/ 对应骑士可走的八个方向。
int ktmove1[8] =
int ktmove2[8] =
/ 测试下一步的出路。
int nexti[8] =
int nextj[8] =
/ 记录出路的个数。
int exists[8] =
int i, j, k, m, l;
int tmpi, tmpj;
int count, min, tmp;
i = x;
j = y;
board[i][j] =1;
for(m = 2; m <=64; m++)count = l;
/ 如果可走的方向为0个,返回。
if(count ==0)
else if(count ==1)
else/ 走最少出路的方向。
i = nexti[min];
j = nextj[min];
board[i][j] =m;
return 1;
4.结果分析。
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...