- 22
- 0
- 约1.07万字
- 约 19页
- 2017-09-16 发布于广东
- 举报
课程设计说明书 NO.1
八皇后问题
一 课程设计目的通过对一些实际问题的分析,加深理解,将课本的理论运用到实践中,提高独立思考和理解问题的能力,加强动手能力,增加学习心得。FindQueens(int i),设有一个参数i, 表示在1至i-1行都已有皇后合理放置的情况下,寻找第i行的合理放置。在i行上,有8种可能的放置,列iColumn顺次选择第1列、第2列……直至第8列。当i行iColumn列的放置是合理的时候,就设置与i行iColumn列相对应的列、斜线有皇后的标志,并在i=7(i从0开始计算)的情况下,输出解;否则递归调用FindQueens(i+1),在第i+1行上寻找合理的放置。一列试探结束,再试探下一列之前,清除已设置的与i行iColumn列相对应的列、斜线有皇后的标志,让iColumn增加1,在下一列寻找解。
要关心的是一个皇后是否已经合理的沿着每一行、每一列的斜线安置。因此在每一列上恰好安置一个皇后,引入一个二维数组(设数组为Queen[ ][]),Queen[i][iColumn]表示在棋盘的第i行、第iColumn列方格上有一个皇后。另外,为了使程序在检查皇后放置的合理性
方面简易方便,引入以下三个工作数组(k仅代表其中一个元素):
数组a[ ],a[k]=1表示第k列上有皇后;
数组b[ ],b[k]=1表示第k条主对角线上有皇后;
数组c[ ],c[k]=1表示第k条反对角线上有皇后;
棋盘中的行与列有如下规律:
同一条主对角线上的方格,它们的行号与列号之间的关系:i-iColumn+7均相等;
同一条反对角线上的方格,它们的行号与列号之间的关系:i+iColumn均相等。
初始化时,所有行和斜线上均没有皇后。在第i行的iColumn列方格放置一个合理的皇后后,准备考察第i+1行时,应在数组a[ ],b[ ],c[ ]中为第i行、第iColumn列的方格设定有皇后的标志;如果前次的皇后放置导致后面的放置无论如何都不能满足要求,则回溯,重置,这时,应先清除原先在数组a[ ],b[ ],c[ ]中设置的关于第i行、第iColumn列有皇后的标志;一个皇后在第i行、第iColumn列方格内放置是合理的,由数组a[ ],b[ ],c[ ]对应位置都没有皇后来确定。
沈 阳 大 学
课程设计说明书 NO.3
3.2 递归算法
递归查找全部解的算法描述如下:
void FindQueens(int i)
{
for(iColumn=0;iColumn8;iColumn++)
{
if(a[iColumn]==0b[i-iColumn+7]==0c[i+iColumn]==0)//如无冲突
Queen[i][iColumn]=#; //放皇后
a[iColumn]=1; //标记,下一次该列上不能放皇后
b[i-iColumn+7]=1; //标记,下一次该主对角线上不能放皇后
c[i+iColumn]=1; //标记,下一次该反对角线上不能放皇后
if(i7) FindQueens(i+1); //如果行还没有遍历完,进入下一行
else //否则输出
{
//输出棋盘状态
for(iLine=0;iLine8;iLine++)
for(iColumn=0;iColumn8;iColumn++)
cout Queen[iLine][iColumn];
//如果前次的皇后放置导致后面的放置无论如何都不能满足要求,则回溯,重置
Queen[i][iColumn]=*;
a[iColumn]=0;
b[i-iColumn+7]=0;
c[i+iColumn]=0;
}
}
}
沈 阳 大 学
课程设计说明书 NO.4
4 详细设计
4.1 主函数和初始化
//主函数,提供程序入口,并初始化棋盘为没有皇后的状态,以便放置皇后
int main()
{
int iLine,iColumn;
cout============================================endl
本程序是八皇后问题演示程序,采用模拟友好界面,本程endl
序具有界面友好易操作等特点,但是未考虑放置状态旋 endl
转重复问题,总计92种状态
您可能关注的文档
- VB车队管理系统设计毕业论文.doc
- 超声波测距原理论文.doc
- VHDL抢答器的设计论文.doc
- windowsserver2003校园网组建论文.doc
- WNC500挖泥船台车液压系统设计论文.doc
- X700涡旋式选粉机(壳体及传动部件)设计说明书.doc
- XML数据存储设计.doc
- xxx宾馆客房管理系统的设计说明.doc
- XX通讯公司的营销策略研究.doc
- XX网络营销策略及问题分析.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)