资源描述:
《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模块及算法设计……………………………………………………………………………………73.1算法描述73.2.详细
3、流程图94.程序代码…………………………………………………………………………………………105程序调试分析……………………………………………………………………………………146运行与测试………………………………………………………………………………………157总结……………………………………………………………………………………………188致谢………………………………………………………………………………………………19参考文献………………………………………………………………………………………191.课题综述1.1课题的来源及意义八皇后问题是一个古老而
4、著名的问题,该问题是十九世纪著名的数学家高斯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)输出样式实例1.4面对的问题需要用三种方法解决八皇后问题,在这里需要查阅大量资料并多加练习,才能成功编写程序。主
6、要要解决下面的问题:冲突:包括列、行、两条对角线;1.列:规定每一列放一个皇后,就不会造成列上的冲突;2.行:当第i行被某个皇后占据时,该行所有空格就都不能放置其他皇后;3.对角线:对角线有两个方向,在同一对角线上的所有点都不能有冲突。2.需求分析2.1涉及到的知识在本次的课程设计中,用到的知识点主要有:类、函数、选择结构里的条件语句、循环结构里的while语句以及for循环语句、控制语句里的break语句、以及字符串函数的运用等等,并且应用到递归、回溯及穷举等比较经典的算法。2.1.1类2.1.1.1类定义类就是用户自定义的数据类型。类定义的一
7、般形式如下: class类名 { 细节;(数据成员,成员函数)};2.1.1.2类函数定义类成员函数类的成员函数通常在类外定义,一般形式如下: 返回类型类名::函数名(形参表) { 函数体; }双冒号::是域运算符,主要用于类的成员函数的定义。2.1.2函数2.1.2.1函数的定义定义函数需要指明:函数执行结果返回值的类型、函数名、形式参数(简称形参)和函数体。一般形式为:数据类型函数名(行参表){语句序列;Return合适类型数值}2.1.2.2数据类型规定了函数返回值类型。执行函数体中的语句后,通常会产生一个结果,这就是函数的返回
8、值,它可以是任何有效的类型。若函数执行后不返回值,数据类型习惯用void来表示。如果在函数定义时没有数据类型出现,则默认为函数返回值为整