- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 13
课程设计题目
1 问题描述
将马随机放在国际象棋的8*8棋盘Board[8][8]的某个方格中,马按走棋规则进行移动,要求每个方格上只进入一次,走遍棋盘上全部64个方格
2 基本要求
采用图形界面实现该游戏。
从键盘输入马的初始位置。
编制程序,求出马的行走路线 ,并按求出的行走路线,将数字1,2,…,64依次填入一个8* 8的方阵,并输出之。
3系统分析与设计
3.1 数据结构
逻辑结构为线性结构,用顺序栈。坐标点用已结构体来表示,并将其的位置放在s[step]的栈中,而且将每走一步的坐标放在另一栈s1中
3.2 算法设计
1.程序框架及功能模块划分:
2.设计功能的分析与实现
void exit(point p)
参数:point
功能:计算出下一步可能位置,按其各个位置下一个位置的和压栈到s[]中
算法描述:接受参数传来的值,按次序加上
int horizontal[]={2,1,-1,-2,-2,-1,1,2};
int vertical[]={-1,-2,-2,-1,1,2,2,1};
再根据legal函数来判断是否合法(x(0~7),y(0~7))是,则保存在point ap[]中,再按各自下一步的数目从大到小排序。最后,将ap[]中的点压栈。
int number(point p)
参数:point
功能:找出当前位置下一步的各种可能位置,计算可能之和
算法描述:接受参数传来的值,按次序加上
int horizontal[]={2,1,-1,-2,-2,-1,1,2};
int vertical[]={-1,-2,-2,-1,1,2,2,1};
再根据legal函数来判断是否合法(x(0~7),y(0~7))是,则加1并将值返回
void next(point p)
参数:point
功能:/找出各个位置并将其步数记录
算法描述:将其步数记录在board[][]的相应位置,并将这点压栈到s1,判断步数是否小于64,再根据这四个条件选择执行其中的一个,再递归调用next.
bool legal(point p)
参数:point
功能:判断是否可行,合法(是否在棋盘上,是否走过)
算法描述 :用这样的语句if((p.x=0)(p.xn)(p.yn)(p.y=0)(board[p.x][p.y]==0))
return true;
else
return false;
4 测试数据及结果
测试数据和运行输出及结果分析
输入x(0-7),y(0-7)
0 0
1 34 3 18 49 32 13 16
4 19 56 33 14 17 50 31
57 2 35 48 55 52 15 12
20 5 60 53 36 47 30 51
41 58 37 46 61 54 11 26
6 21 42 59 38 27 64 29
43 40 23 8 45 62 25 10
22 7 44 39 24 9 28 63
Press any key to continue
输入x(0-7),y(0-7)
0 9
输入不合法,重输入!
输入x(0-7!),y(0-7!)
4 5
30 27 10 49 40 25 8 5
11 48 29 26 9 6 39 24
28 31 56 45 50 41 4 7
47 12 51 42 19 44 23 38
32 57 46 55 52 1 18 3
13 64 53 60 43 20 37 22
58 33 62 15 54 35 2 17
63 14 59 34 61 16 21 36
Press any key to continue
5 总结
调试过程中遇到的主要问题,是如何解决的;
问题1:只走到63步
原因:第64步就走完了,并且s[62]中只有一个元素,这个判断条件(s[step].base==s[step].topnumber(p2)==0)满足就进入了,而始终不能走完
解决方法:改了判断条件,改为((s[step].bas
您可能关注的文档
最近下载
- 广州数控GSK980TB3系列使用手册.pdf
- (热门!)最新版的比亚迪供应商审核自查表(可编辑!).docx VIP
- QJ300-12N钱江闪300维修手册(24.7.16).pdf VIP
- 一消《消防安全案例分析》历年真题及答案解析(第2套).pdf VIP
- (完整word版)内科护理学第五版目录.pptx
- 3.1 中国的土地资源(教学课件)地理商务星球版2025八年级上册.pptx
- 动力电池产品介绍.pptx VIP
- 肺结核患者的护理常规.pptx VIP
- 最新国家开放大学国开电大《机械制图》形考任务1-4 参考答案.pdf VIP
- 中国新能源汽车动力电池产业现状及前景展望.pptx VIP
原创力文档


文档评论(0)