文档介绍:C++课程设计
课程设计题目: 八皇后问题
姓 名: xxx
专 业:xxx
班 级: xxxxxx
学 号:xxxxxxxx
指导教师: xxx
日期: 2014年6月17日
目 录
1 课题综述…………………………………………………………………………………………ﻩ2
1。 1课题的来源及意义ﻩ2
1。2 预期目标ﻩ2
1。3 八皇后问题课题要求ﻩ3
1。4 面对的问题 4
2 需求分析ﻩ…………………………………………………………………………………………4
涉及到的知识 4
总体方案ﻩ6
2。3 软件的需求....。....。.。。。...。.。。。..。.。.。.。.。....。.。。.....。..。.。。。...。...。..。...。..。....。。。。。。..。。..。。。.。.。...。....。...。.。.....。...。.。。。。。.。...7
功能需求.。。。.。。。。...。.。...。。...。....。。。。。。.。....。。.。。...。...。...。..。..。.。..。。。........。.。。..。...。。.。。...。。。.。.。。...。。..。..。。..。.。.。。.。。。....。。.7
3 模块及算法设计……………………………………………………………………………………7
3.1 算法描述 7
9
…………………………………………………………………………………………10
5 程序调试分析……………………………………………………………………………………14
6 运行与测试………………………………………………………………………………………15
7总结ﻩ……………………………………………………………………………………………18
8 致谢 ………………………………………………………………………………………………19
参 考 文 献ﻩ………………………………………………………………………………………19
1.课题综述
1。 1课题的来源及意义
八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的。
在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法.
到了现代,随着计算机技术的飞速发展,这一古老而有趣的数学游戏问题也自然而然的被搬到了计算机上。运用所学计算机知识来试着解决这个问题是个锻炼和提高我自己编程能力和独立解决问题能力的好机会,可以使我增强信心,为我以后的编程开个好头,故我选择了这个有趣的课题。
1.2 预期目标
运用C++程序设计的编程思想编写代码,实现八皇后问题的所有(92种)摆放情况。要求在DOS界面上显示出每一种方式。
八皇后问题课题要求
输入后,显示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 面对的问题
需要用三种方法解决八皇后问题,在这里需要查阅大量资料并多加练习,才能成功编写程序。主要要解决下面的问题:
冲突:包括列、行、两条对角线;
列:规定每一列放一个皇后,就不会造成列上的冲突;
行:当第i行被某个皇后占据时,该行所有空格就都不能放置其他皇后;
对角线:对角线有两个方向,在同一对角线上的所有点都不能有冲突。
2。 1 涉及到的知识
在本次的课程设计中,用到的知识点主要有:类、函数、选择结构里的条件语句、循环结构里的while语句以及for循环语句、控制语句里的break语句、以及字符串函数的运用等等,并且应用到递归、回溯及穷举等比较经典的算法。
.1 类
2。.1 类定义
类就是用户自定义的数据类型.
类定义的一般形式如下:
class 类名
{
ﻩﻩ细节;(数据成员,成员函数)
};
2。。2 类函数定义
类成员函数类的成员函数通常在类外定义,一般形式如下:
返回类型 类名::函数名(形参表