数据结构课程设计报告。
题目:马踏棋盘。
学院__ 计算机___
专业___网络工程___
年级班别 2009级01班。
学号___3109006480___
学生姓名___林秋鹏___
指导教师___李小妹___
成绩。2024年 7 月6 日
一.需求分析。
1.问题描述。
设计一个国际象棋的马踏遍棋盘的演示程序。
2.基本要求。
将马随机放在国际象棋的8x8棋盘board[8][8]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,。。
64依次填入一个8x8的方阵,输出之。
3.测试数据。
由读者指定。可自行指定一个马的初始位置。1<=i<=8, 1<=j<=8.即输入行数和列数。
4.选作内容。
(1)求出从某一起点出发的多条以至全部行走路线。
(2)**每次选择位置的“最佳策略”,以减少回溯的次数。(本程序完成)
(3)演示寻找行走路线的回溯过程。(本程序完成)
二.概要设计。
1.总体思路以及改进算法。
a.前期想法以及遇到困难:
一开始,我是按照题目要求,用最基本的算法,就是每次走一步都将其信息放进栈中,以便回溯的时候调用其它出口。而每次走的下一步都是没有经过一定的挑选,而是固定着8个位置中的某个位置开始绕。以至造成回溯次数超多,当马初始位置为某个位置时甚至无法运行,于是宣告了这个算法的失败。
b.后期算法改进:
在前面的基础上,我认识到了,这个算法改进的关键就在于对出口的挑选,才能更多的减少回溯次数,于是有了这个完美的‘贪婪法’。即每次都走下一个位置**口数最少的那个位置,实现过程基本不用回溯。
2.本程序中用到的函数。
void initarray
操作结果:初始化棋盘,将棋盘内的空格置为0
int nextgo(int i,int j
操作结果:计算出某个位置的出口数。
int nextplace(int i,int j)
操作结果:找出当前位置的所有下一个位置**口数最少的位置。
void print
操作结果: 输出棋盘
3.主函数流程以及各模块间的关系。
三.详细设计。
每个操作的伪码算法。
1.void initarray()
if 是棋盘内的格子。
相应数组的元素数值为0
2.int nextgo(int i,int j)
for(p=0;p<8;p++)
if 下一个出口不超出棋盘的范围。
if 下一个出口的数值是0
它的出口数++
3.int nextplace(int i,int j)
for(p=0;p<8;p++)
if下一个出口不超出棋盘的范围。
if下一个出口的数值是0
调用计算出口数函数,计算它的下一个位置哪个的出口最少。
return 出口数最少的那个位置的步数。
4.void print()
输出棋盘。5.主程序。
t =1;while(t) 设置循环,以便多次调用马踏棋盘。
初始化棋盘。
由读者分别输入行号和列号。
if 行号或者列号超出棋盘范围。
请重新输入。
i=i-1计算出棋盘的行数,列数在马位置的数组中的相应下标*/
j=j-1;
board[i][j]=n;
while(n<64)
自定义函数。
void initarray初始化棋盘,将棋盘内的空格置为0 */
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
board[i][j]=0;
int nextgo(int i,int j计算出某个位置的出口数 */
int count=0,p;
for(p=0;p<8;p++)
return count;
int nextplace(int i,int j找出当前位置的所有下一个位置**口数最少的位置*/
int step=8,p,min=9,temp;
for(p=0;p<8;p++)
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...