资源描述:
《c++八皇后问题课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++课程设计课程设计题目:八皇后问题姓名:xxx专业:xxx班级:xxxxxx学号:xxxxxxxx指导教师:xxx日期:2014年6月17日目录1课题综述…………………………………………………………………………………………21.1课题的来源及意义21.2预期目标21.3八皇后问题课题要求31.4面对的问题42需求分析…………………………………………………………………………………………42.1涉及到的知识42.2总体方案62.3软件的需求............................................
2、.......................................................................................72.4功能需求.......................................................................................................................................73模块及算法设计………………………………………………………………………
3、……………73.1算法描述73.2.详细流程图94.程序代码…………………………………………………………………………………………105程序调试分析……………………………………………………………………………………146运行与测试………………………………………………………………………………………157总结……………………………………………………………………………………………188致谢………………………………………………………………………………………………19参考文献………………………………………………………………………………………
4、191.课题综述1.1课题的来源及意义八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的。在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。到了现代,随着计算机技术的飞速发展,这一古老而有趣的数学游戏问题也自然而然的被搬到了计算机上。运用所学计算机知识来试着解决这个
5、问题是个锻炼和提高我自己编程能力和独立解决问题能力的好机会,可以使我增强信心,为我以后的编程开个好头,故我选择了这个有趣的课题。1.2预期目标运用C++程序设计的编程思想编写代码,实现八皇后问题的所有(92种)摆放情况。要求在DOS界面上显示出每一种方式。1.3八皇后问题课题要求输入后,显示X,Y以及共有多少种布局方案,并显示每一种方案的具体情况77:(0,2)(1,0)(2,6)(3,4)(4,7)(5,1)(6,3)(7,5)78:(0,7)(1,1)(2,4)(3,2)(4,0)(5,6)(6,3)(7,5)输出样式实例
6、1.4面对的问题需要用三种方法解决八皇后问题,在这里需要查阅大量资料并多加练习,才能成功编写程序。主要要解决下面的问题:冲突:包括列、行、两条对角线;1.列:规定每一列放一个皇后,就不会造成列上的冲突;2.行:当第i行被某个皇后占据时,该行所有空格就都不能放置其他皇后;3.对角线:对角线有两个方向,在同一对角线上的所有点都不能有冲突。2.需求分析2.1涉及到的知识在本次的课程设计中,用到的知识点主要有:类、函数、选择结构里的条件语句、循环结构里的while语句以及for循环语句、控制语句里的break语句、以及字符串函数的运用
7、等等,并且应用到递归、回溯及穷举等比较经典的算法。2.1.1类2.1.1.1类定义类就是用户自定义的数据类型。类定义的一般形式如下: class类名 { 细节;(数据成员,成员函数)};2.1.1.2类函数定义类成员函数类的成员函数通常在类外定义,一般形式如下: 返回类型类名::函数名(形参表) { 函数体; }双冒号::是域运算符,主要用于类的成员函数的定义。2.1.2函数2.1.2.1函数的定义定义函数需要指明:函数执行结果返回值的类型、函数名、形式参数(简称形参)和函数体。一般形式为:数据类型函数名(行参表)
8、{语句序列;Return合适类型数值}2.1.2.2数据类型规定了函数返回值类型。执行函数体中的语句后,通常会产生一个结果,这就是函数的返回值,它可以是任何有效的类型。若函数执行后不返回值,数据类型习惯用void来表示。如果在函数定义时没有数据类型出现,则默认为函数返回值为整