




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告设计题目: 八皇后问题 系院: 数学学院 专 业: 信息与计算科学 班 级: 02班 学生姓名 王天宇 学 号: 20216390指导教师: 设计任务书课题名称 八 皇 后设计目的1. 用c+语言平台将一个的棋盘上放上个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击的92种结构予以实现2. 通过这次课程设计,提高自己的编程能力,熟悉c+的编程坏境,为以后的程序开发打下根底.实验环境1 语言平台:tc+或; 2 执行文件:八皇后
2、.exe任务要求试编写程序实现将八个皇后放置在国际象棋棋盘的无冲突的位置上的算法,并给出所有的解。1. 课题综述1. 1课题的来源及意义 八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的。在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线正斜线或反斜线上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。到了现代,随着计算机技术的飞速开展,这一古老而有趣的数学游戏问题也自然而然的被搬到了计算机上。运用
3、所学计算机知识来试着解决这个问题是个锻炼和提高我自己编程能力和独立解决问题能力的好时机,可以使我增强信心,为我以后的编程开个好头,故我选择了这个有趣的课题。1. 2 面对的问题1 解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后,那么同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态;2 使用数据结构的知识,用递归法解决问题。2概要设计本课件学生是用循环递归循环来实现的,分别一一测试了每一种摆法,并把它拥有的92种变化表现出来。在这个程序中,我的主要思路以及思想是
4、这样的: 1解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后,那么同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态; 对角线:对角线有两个方向。在这我把这两条对角线称为:主对角线和从对角线。在同一对角线上的所有点设下标为(i,j),要么(i+j)是常数,要么(i-j)是常数。因此,当第I个皇后占领了第J列后,要同时把以(i+j)、(i-j)为下标的标记置为被占领状态。 2数据结构的实现 而对于数据结构的实现,学生那么是着重于: 数组aI:a I表示第I个皇后放置的列;I的范围:1.8; 对角线数
5、组:bj(主对角线),cj从对角线,根据程序的运行,去决定主从对角线是否放入皇后;3. 详细设计和实现4.1.1 算法描述A、 数据初始化。B、 从n列开始摆放第n个皇后因为这样便可以符合每一竖列一个皇后的要求,先测试当前位置n,m是否等于0未被占领。如果是,摆放第n个皇后,并宣布占领记得姚横列竖列斜列一起设置,接着进行递归;如果不是,测试下一个位置n,m+1,但是如果当n<=8,m=8时,发现此时已无法摆放时,便要进行回溯。从问题的某一种可能出发,搜索从这种情况能出发,继续搜索,这种不断“回溯的寻找解的方法,称为“回溯法。C、使用数组实现回溯法的思想。D、当n>8时,便打印出结果
6、。E、输出函数我使用printf输出,运行形式为:第m种方法为:* * * * * * * * 5. 代码编写及详细注释#include<iostream>using namespace std;int a8,b8,c30,d30;int i, k,X=0,Y=0;void print() int t,n;Y+;cout<<"tNo."<<Y<<": nt" /矩阵形式的第Y种情况for (k=1;k<9;k+) n=ak; for(t=1;t<n;t+)cout<<"x
7、" cout<<"Q " t+; for(t;t<9;t+)cout<<"x " cout<<"nt"cout<<"n"void PlaceQueen(int i)int j ,e=1;for (j=1;j<9;j+)if (bj=0) &&(ci+j=0)&& (di-j=0)ai=j;bj=1;ci+j=1;di-j=1;if (i<8) PlaceQueen(i+1);elseprint();/打印结果
8、bj=0;/回溯ci+j=0;di-j=0;e+;int main()int choice,e=1;char ch;cout<<"nnt* Welcome to EightQueen inquiries software problems *nn"for( k=0;k<24;k+)/数据初始化 bk=0;ck=0;dk=0;ch='y'while(ch='y'|ch='Y') cout<<"nt 查 询 菜 单n" cout<<"nt*" cout<<"nt* No.1-视图矩阵形式显示皇后的位置 *" cout<<"nt* No.0-退 出 *" cout<<"nt*" cout<<"nt请选择菜单号(No.0-No.1):" cin>>choice; switch(choice) case 1:cout<<"nt使用回车查看下一种情况n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国天然碱项目商业计划书
- 中国氮磷钾复合肥项目投资计划书
- 中国增韧剂项目商业计划书
- 中国庚酸烯丙酯项目创业计划书
- 浅谈小学数学情智课堂实践探究的重要性
- 伊春市中医院脊柱骨盆固定技术专项考核
- 中国中空玻璃丁基胶项目商业计划书
- 哈尔滨市人民医院护理管理创新与变革管理理论试题
- 唐山市人民医院放疗科住院医师规范化培训考核
- 中国天然橡胶及制品项目投资计划书
- DB64∕T 1561-2022 养老机构安宁服务规范
- 图书馆建设项目数字化方案
- 药食同源培训
- 音乐传播三试题及答案
- 秦朝服饰设计分享
- 麻醉疼痛护理科普知识精讲
- 子宫脱垂的中医护理查房
- 冷库修建合同协议书范本
- 企业文化课件讲解内容
- 2025年乡村振兴战略技能知识考试题与答案
- 【课件】急性百草枯农药中毒
评论
0/150
提交评论