国际象棋马走满棋盘不重复.pdf

国际象棋马走满棋盘不重复.pdf

ID:52348696

大小:238.52 KB

页数:7页

时间:2020-03-26

国际象棋马走满棋盘不重复.pdf_第1页
国际象棋马走满棋盘不重复.pdf_第2页
国际象棋马走满棋盘不重复.pdf_第3页
国际象棋马走满棋盘不重复.pdf_第4页
国际象棋马走满棋盘不重复.pdf_第5页
资源描述:

《国际象棋马走满棋盘不重复.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实习报告题目:编制一个实现8X8马踏棋盘的一个程序.班级:11计算机2班组员:潘财策斯祯量章春伟朱伟完成日期:2013.6.7一需求分析将马随机放在国际象棋的8×8棋盘ch[0~7][0~7]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之二概要设计为实现上述功能需要一个顺序的栈存储每一步,以及一个模拟马踏棋盘过程的模块。为此需要两个抽象数据类型,即栈和马踏棋盘.1.对栈的抽象数据定义为:voidInitSt

2、ack(SqStack&S);//构造一个空栈SboolGetTop(SqStack&S,XY&e);//若栈不空,则用e返回s的栈顶元素,返回OK;否则返回ERRORvoidPush(SqStack&S,XY&e);//插入元素e为新的栈顶元素boolPop(SqStack&S);//若栈不空,则删除s的栈顶元素,并用e返回其值,并返回OK;否则返回ERROR2.对马踏棋盘的抽象数据定义为:voidCha(XY&e);//判断可选的最佳位置并排序boolNext(XY&e,intch[][8],SqStack&S,XY&r);//贪心法判断下一步的可

3、能选位置,并返回OK若找不到位置返回ERRORvoidMT(intch[][8],SqStack&S);//依次重复运行,找出所有位置3.本程序包涵3个模块:1)主程序模块.2)实现栈操作模块.3)实现马踏棋盘操作模块.三详细设计#include#include#include#defineSTACK_INIT_SIZE70#defineSTACKINCREMENT10voidgz(){//程序说明system("cls");printf("******************************

4、**********************");printf("*程序说明:*");printf("*8X8的国际棋盘*");printf("*输入两个数字作为马的初始位置*");printf("*输入数据必须在0~7之间*");printf("*程序将给出马的遍历行走路线*");printf("*路线以步数形式给出*");printf("********************************计算机2班16组*******");printf("输入初始位置开始程序:");}typedefstruct{//

5、定义Po型数据,Po为下一步棋的坐标(简称当前步的出口)intx;//x坐标inty;//y坐标intp;//当前步出口的下一步棋出口的数量}Po;typedefstruct{//定义XY类型,xy为当前步棋intx;//x坐标inty;//y坐标intp;//当前步棋的出口序号intn;//当前步棋的出口数量Poa[8];//Po型数组}XY;typedefstruct{//定义栈XY*base;XY*top;intstacksize;}SqStack;voidInitStack(SqStack&S){//建立空栈S.base=(XY*)malloc

6、(STACK_INIT_SIZE*sizeof(XY));if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;}boolGetTop(SqStack&S,XY&e){//顶端元素赋值给e,返回tureif(S.top==S.base)returnfalse;e=*(S.top-1);returntrue;}voidChP(SqStack&S,XYe){//修改栈顶端元素*(S.top-1)=e;}voidPush(SqStack&S,XY&e){if(S.top-S.ba

7、se>=S.stacksize){//如果栈存储空间不够,增加分配空间S.base=(XY*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(XY));if(!S.base)exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}(*S.top).x=e.x;//把e压入栈(*S.top).y=e.y;(*S.top).p=e.p;S.top++;}boolPop(SqStack&S){if(S.top==S.base

8、)returnfalse;//如果空栈返回false--S.top;//删除栈顶元素retur

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。