欢迎来到天天文库
浏览记录
ID:11470035
大小:231.56 KB
页数:10页
时间:2018-07-12
《马踏棋盘课程设计实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数据结构》课程设计实验报告课程名称:《数据结构》课程设计课程设计题目:马踏棋盘姓名:邱可昉院系:计算机学院专业:计算机科学与技术班级:10052313学号:10051319指导老师:王立波2012年5月18日10目录1.课程设计的目的………………………………………………………32.问题分析………………………………………………………………33.课程设计报告内容……………………………………………………3(1)概要设计………………………………………………………3(2)详细设计………………………………………………………3(3)测试结果………………………………………………………5(4)程
2、序清单………………………………………………………64.个人小结……………………………………………………………10101.课程设计的目的《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各种类型的数据结构。学好数据结构对掌握实际编程能力是很有帮助的。为了学好《数据结构》,必须编写一些在特定数据结构上的算法,通过上机调试,才能更好地掌握各种数据结构及其特点,同时提高解决计算机应用实际问题的能力。2.问题分析*问题描述:将马随机放在国际象棋的8X8棋盘Bo阿rd[0..7,0..7]的某个方格中,马按走棋规则进行移动。要求每个方格上只进入一次,走遍棋盘上全
3、部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入8X8的方阵输出之。*测试数据:由读者指定,可自行指定一个马的初始位置。*实现提示:每次在多个可走位置中选择一个进行试探,其余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。并探讨每次选择位置的“最佳策略”,以减少回溯的次数。3.课程设计报告内容(1)概要设计定义一张棋盘,定义一个栈保存马走的路径的点坐标和来自方向,用函数计算周围可走坐标,并检查正确性,当周围没有可走格子时退栈到最优位置,继续进行,然后将路径输出。(2)详细设计定义结构体,方向数组和
4、Qioan类structPoint{intx;//记录横坐标inty;//记录纵坐标intfrom;//前一个位置的方向};Pointside[8]={0,0,0};//记录可能的方向坐标classQipan{public:Qipan();~Qipan();voidSetside(Point);//设置方向坐标boolGetside(int,Point&);//将指定方向的坐标给特定指针boolHorseVisit(Point);//输入开始点运行棋盘boolPass(Point);//输出路径private:int**gezi;//棋盘格子};10然后对每个函数进行定义Qipa
5、n::Qipan(){//构造函数构建棋盘……}Qipan::~Qipan(){//销毁棋盘……}voidQipan::Setside(Pointcur){//根据输入的当前点设置下一个点的可能方向坐标……}boolQipan::Getside(inti,Point&next){//根据方向把将坐标赋给下一个点……}boolQipan::HorseVisit(Pointbegin){//棋盘运行……}最后是主函数,设计一些用户界面intmain(){bools=true;while(s){intcount=0;intgezi[8][8]={0};Pointbegin;cout<<
6、"请输入马的初始位置x和y:";cout<>begin.x>>begin.y;//输入起始点,并判断正确性while(begin.x>8
7、
8、begin.x<1
9、
10、begin.y>8
11、
12、begin.y<1){cout<<"输入有误,请重新输入x和y:"<>begin.x>>begin.y;}begin.x--;begin.y--;begin.from=0;QipanA;//
13、定义Qipan类的对象As=A.HorseVisit(begin);//A运行函数HorseVisit}return0;}10(3)测试结果对于一次死路后退栈次数进行测试1次用时很长且为运行出来2次3次4次5次6次10又测试了其他几个点得出一次死路退栈5次能尽量少的减少退栈次数其他几个点的数据(4)程序清单#include#include"SqStack.h"10usingnamespacestd;#defineMAXSIZE70#defineN8struct
此文档下载收益归作者所有