1 / 6
文档名称:

课程设计报告-马踏棋盘2.docx

格式:docx   大小:28KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

课程设计报告-马踏棋盘2.docx

上传人:1772186**** 2022/8/18 文件大小:28 KB

下载得到文件列表

课程设计报告-马踏棋盘2.docx

文档介绍

文档介绍:合肥老浣
必靠机科学与技术系课程设计报告
2012—2013 学年第二学期2013
一、课程设计目的
“数据结构与算法课程设计”是计算机科学与技术专业学生的集中实践性环节之一,是 学习“数据结构与算法”理论和实验课程后进行的一次置。但是,如果(x,y)靠近棋盘 的边缘,上述位置可能超出棋盘范围,成为不允许的位置。
四、详细设计方案及流程图
(1)定义头文件和宏定义#include<>
ttdefine MAXSIZE 100ttdefine N 8
(2)数据类型定义int board[8] [8];定义棋盘;
int Htryl [8] = {1, -1, -2, 2, 2, 1, -1, -2};
int Htry2[8] = {2, -2, 1, 1,-1,-2, 2,-l};Htryl[8]和 H宜y2[8]分别表示马各个出 口位置相对当前位置的横坐标和纵坐标的增量数组;struct Stack
(int i;
int j;int director;
}stack[MAXSIZE];
int top=-l;这里是定义栈类型,其中i是横坐标,j是纵坐标,director是 存储方向,stack[MAXSIZE]表示定义一个栈数组,top=-l表示栈指针,可以存储棋盘上的 信息以及栈中元素移动情况。
(3)主函数
在mainO函数中,我们通过一个双重for循环控制棋盘的横纵坐标完成了对棋盘的初始 化,在通过一个三个表达式都为空的for循环来控制输入正确的横纵坐标,直到输入正确才 跳出循环在执行下面的语句,最后通过调用InitLocation(int xi, int yi)函数完整了整个 马踏棋盘问题。
(4)探寻路径函数
定义一个TryPath(int i, int j)函数来探寻马的行走路径,此函数通过while (top>-l) 语句将程序控制在栈不为空的情况下进行循环,在while循环中,首先通过一个双重for 循环记录下当前位置的下一个位置的可行路径条数,在通过一个双重for循环将前面可行路 径条数从小到大排序存储在数组中,最后通过一个for循环来向8个方向进行探寻。
(5)输出路径函数
定义一个Display。函数来按照棋盘格式输出马的探寻路径,此函数通过一个双重for 循环来实现的,外循环控制横坐标的增加,内循环控制纵坐标的增加。
(6)起始坐标函数
定义一个InitLocation(int xi, int yi)函数将马的行走路径与棋盘坐标联系起来到达 预期效果,此函数是通过栈将马的起始位置与棋盘坐标联系起来的,并且调用了 TryPath(int i, int j)函数和 Display ()函数。
时间复杂度分析:在main。函数中,棋盘初始化的时间复杂度为0 (M2),接着经过一 个for循环,其时间复杂度为0 (1),再往下调用InitLocation(xT,y-l)函数时,要经过 一个while(top〉T),在while循环中还有双重for循环,因此时间复杂度比拟大,故总的 时间复杂度也比拟大。
(7)流程图开始
v
录入横坐标
x>= 1 &&x<=8&&y>= 1 &&y<=8
探索路径
lllll
5、测试结果及