c++课程设计八皇后问题

c++课程设计八皇后问题

ID:12060943

大小:136.50 KB

页数:13页

时间:2018-07-15

c++课程设计八皇后问题_第1页
c++课程设计八皇后问题_第2页
c++课程设计八皇后问题_第3页
c++课程设计八皇后问题_第4页
c++课程设计八皇后问题_第5页
资源描述:

《c++课程设计八皇后问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、安徽建筑工业学院数据结构设计报告书院系数理系专业信息与计算科学班级11信息专升本学号11207210138姓名李晓光题目八皇后指导教师王鑫1.程序功能介绍答:这个程序是用于解决八皇后问题的。八皇后问题等于要求八个皇后中的任意两个不能被放在同一行或同一列或同一斜线上。做这个课题,重要的就是先搞清楚哪个位置是合法的放皇后的位置,哪个不能,要先判断,后放置。我的程序进入时会让使用者选择程序的功能,选【1】将会通过使用者自己手动输入第一个皇后的坐标后获得答案;选【2】将会让程序自动运算出固定每一个皇后后所有的排列结果。2.课程设计要求答:(1)增加函数,完成

2、每输入一组解,暂停屏幕,显示“按任意键继续!”。(2)完善程序,编程计算八皇后问题共有集中排列方案。(3)增加输入,显示在第一个皇后确定后,共有几组排列。(4)将每组解的期盼横向排列输出在屏幕上,将五个棋盘并排排列,即一次8行同时输出5个棋盘,同样完成一组解后屏幕暂停,按任意键继续。(5)求出在什么位置固定一个皇后后,解的数量最多,在什么位置固定皇后后,解的数量最少,最多的解是多少,最少的解是多少,并将最多,最少解的皇后位置及所有的解求出,同样5个一组显示。3.对课程题目的分析与注释答:众所周知的八皇后问题是一个非常古老的问题,问题要求在一个8*8的

3、棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击。按照国际象棋的规则,一个皇后可以攻击与之处在同一行或同一列或同一斜线上的其他任何棋子。因此,本课程设计的目的也是通过用C++语言平台在一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击的92种结构予以实现。使用递归方法最终将其问题变得一目了然,更加易懂。首先要用到类,将程序合理化:我编辑了一个盘棋8*8的类:classBoard,还有个回溯法的类:classStack,关键的类好了,然后编辑好类的成员,然后编辑主函数利用好这

4、些类的成员,让其运算出结果。4.程序设计和说明(说明算法思想、设计思路,给出重要的、关键的代码)答:算法思想:关键代码:classStack{private:STypedata[SSize];intTop;public:Stack(){Top=0;}~Stack(){}boolisEmpty(){return!Top;}intSize(){returnTop;}boolPush(SType);//处理压栈boolPop(SType&);//处理出栈boolStackTop(SType&);//处理复制栈顶的数据};boolStack::Push(ST

5、yped)//将整数d压栈,栈顶加1{if(Top==SSize)//栈内数据已满,操作不成功returnfalse;else{data[Top]=d;Top++;returntrue;}}boolStack::Pop(SType&d)//将整数d出栈{if(!Top)//栈中没有数据,操作不成功returnfalse;else{Top--;//先动栈顶,再出数据d=data[Top];returntrue;}}boolStack::StackTop(SType&d)//复制栈顶的数据到d{if(!Top)returnfalse;else{d=dat

6、a[Top-1];returntrue;}}enumStates{used,free};classBoard//一盘棋8*8{private:StatesRows[8],DiagsLR[15],DiagsRL[15];//行,左右斜线public:charboard[8][8];Board();~Board(){}boolisAttacked(int,int);voidPrint();voidPlaceQueen(int,int);voidRemoveQueen(int,int);};Board::Board()//构造函数,初始化为空{for(in

7、ti=0;i<8;i++){Rows[i]=free;for(intj=0;j<8;j++)board[i][j]='.';}for(intk=0;k<15;k++)DiagsLR[k]=DiagsRL[k]=free;}voidBoard::Print()//显示一组排列结果{cout<

8、否则返回FALSE{intdiagLR=col-row+7;//该皇后的右倾斜线的所有位置intdiagRL

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

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

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