八皇后问题课程设计报告.doc

上传人:灯火****19 文档编号:137557789 上传时间:2020-07-09 格式:DOC 页数:15 大小:205KB
返回 下载 相关 举报
八皇后问题课程设计报告.doc_第1页
第1页 / 共15页
八皇后问题课程设计报告.doc_第2页
第2页 / 共15页
八皇后问题课程设计报告.doc_第3页
第3页 / 共15页
八皇后问题课程设计报告.doc_第4页
第4页 / 共15页
八皇后问题课程设计报告.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《八皇后问题课程设计报告.doc》由会员分享,可在线阅读,更多相关《八皇后问题课程设计报告.doc(15页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计报告设计题目: 八皇后问题 系(院): 数学学院 专 业: 信息与计算科学 班 级: 02班 学生姓名 王天宇 学 号: 20096390指导教师: 设计任务书课题名称 八 皇 后设计目的1. 用c+语言平台将一个的棋盘上放上个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击的92种结构予以实现2. 通过这次课程设计,提高自己的编程能力,熟悉c+的编程坏境,为以后的程序开发打下基础.实验环境1)语言平台:tc+或vc+6.0; 2)执行文件:八皇后.exe任务要求试编写程序实现将八个皇后放置在国际象棋棋盘的无冲突的位置上的算法,并给出所有的解。1. 课题综述

2、1. 1课题的来源及意义 八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的。在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。到了现代,随着计算机技术的飞速发展,这一古老而有趣的数学游戏问题也自然而然的被搬到了计算机上。运用所学计算机知识来试着解决这个问题是个锻炼和提高我自己编程能力和独立解决问题能力的好机会,可以使我增强信心,为

3、我以后的编程开个好头,故我选择了这个有趣的课题。1. 2 面对的问题1)解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后,则同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态;2) 使用数据结构的知识,用递归法解决问题。2概要设计本课件学生是用循环递归循环来实现的,分别一一测试了每一种摆法,并把它拥有的92种变化表现出来。在这个程序中,我的主要思路以及思想是这样的: 1)解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后

4、,则同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态; 对角线:对角线有两个方向。在这我把这两条对角线称为:主对角线和从对角线。在同一对角线上的所有点(设下标为(i,j)),要么(i+j)是常数,要么(i-j)是常数。因此,当第I个皇后占领了第J列后,要同时把以(i+j)、(i-j)为下标的标记置为被占领状态。 2)数据结构的实现 而对于数据结构的实现,学生则是着重于: 数组aI:a I表示第I个皇后放置的列;I的范围:1.8; 对角线数组:bj(主对角线),cj(从对角线),根据程序的运行,去决定主从对角线是否放入皇后;3. 详细设计和实现4.1.1 算法描述A、 数据初

5、始化。B、 从n列开始摆放第n个皇后(因为这样便可以符合每一竖列一个皇后的要求),先测试当前位置(n,m)是否等于0(未被占领)。如果是,摆放第n个皇后,并宣布占领(记得姚横列竖列斜列一起设置),接着进行递归;如果不是,测试下一个位置(n,m+1),但是如果当n8时,便打印出结果。E、输出函数我使用printf输出,运行形式为:第m种方法为:* * * * * * * * 5. 代码编写及详细注释#includeusing namespace std;int a8,b8,c30,d30;int i, k,X=0,Y=0;void print() int t,n;Y+;couttNo.Y: nt

6、; /矩阵形式的第Y种情况for (k=1;k9;k+) n=ak; for(t=1;tn;t+)coutx ; coutQ ; t+; for(t;t9;t+)coutx ; coutnt;coutn;void PlaceQueen(int i)int j ,e=1;for (j=1;j9;j+)if (bj=0) &(ci+j=0)& (di-j=0)ai=j;bj=1;ci+j=1;di-j=1;if (i8) PlaceQueen(i+1);elseprint();/打印结果bj=0;/回溯ci+j=0;di-j=0;e+;int main()int choice,e=1;char c

7、h;coutnnt* Welcome to EightQueen inquiries software problems *nn;for( k=0;k24;k+)/数据初始化 bk=0;ck=0;dk=0;ch=y;while(ch=y|ch=Y) coutnt 查 询 菜 单n; coutnt*; coutnt* No.1-视图矩阵形式显示皇后的位置 *; coutnt* No.0-退 出 *; coutnt*; coutchoice; switch(choice) case 1:coutnt使用回车查看下一种情况nn;PlaceQueen(1); /从第1个皇后开始放置break; case 0:ch=n;break; default:coutntt菜单选择错误,请重新输入!n; 7. 运行与测试 7.1运行演示(以下只是少部分截图)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号