八皇后问题.docx

上传人:b****6 文档编号:5763166 上传时间:2023-01-01 格式:DOCX 页数:9 大小:340.16KB
下载 相关 举报
八皇后问题.docx_第1页
第1页 / 共9页
八皇后问题.docx_第2页
第2页 / 共9页
八皇后问题.docx_第3页
第3页 / 共9页
八皇后问题.docx_第4页
第4页 / 共9页
八皇后问题.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

八皇后问题.docx

《八皇后问题.docx》由会员分享,可在线阅读,更多相关《八皇后问题.docx(9页珍藏版)》请在冰豆网上搜索。

八皇后问题.docx

八皇后问题

一、八皇后问题

设计程序完成如下要求:

在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。

要求:

1)依次输出各种成功的放置方法。

2)最好能画出棋盘的图形形式,并在其上动态地演示试探过程。

1、总思想:

显然,棋盘的每一行可以且必须摆放一个皇后,可以用向量(x1,x2,……,xn)表示n皇后问题的解,即第i个皇后摆放在第i行第xi列的位置(1<=i<=n,且1<=xi<=n)。

由于两个皇后不能位于同一列,所以n皇后问题的解向量必须满足约束条件xi!

=xj。

可以将n皇后问题的n*n棋盘看成是矩阵,设皇后i和皇后j的摆放位置分别是(i,xi)和(j,xj),则在棋盘上斜率为-1的同一条斜线上,满足条件i-xi=j-xj,在棋盘上斜率为1的同一条斜线上,满足条件i+xi=j+xj,综合上述两种情况,n皇后问题必须满足约束条件|i-j|!

=|xi-xj|。

设函数Queue实现任意N皇后问题,皇后k摆放在第k行第x[k]列的位置。

算法的伪代码描述如下:

算法:

Queue(n)

输入:

皇后的个数n

输出:

n皇后问题的解x[n]

初始化k=0,初始化解向量x[n]={-1};

(1)重复执行下述操作,摆放皇后k;

①把皇后k摆放在下一列的位置,即x[k]++;

②如果皇后k摆放在x[k]位置发生冲突,则x[k]++试探下一列,直到不冲突或者x[k]出界;

③如果x[k]没出界且所有皇后都摆放完毕,则输出一个解;

④如果x[k]没出界但尚有皇后没摆放,则k++,转

(1)摆放下一个皇后;

⑤如果x[k]出界,则回溯,x[k]=-1,k--,转

(1)重新摆放皇后k。

注:

本题只考虑八皇后问题。

2、代码:

#include

#include

constintN=8;

intx[N]={-1};

intPlace(intk)

{

for(inti=0;i

if(x[i]==x[k]||abs(i-k)==abs(x[i]-x[k]))//违反约束条件

return1;

return0;

}

intmain()

{

intk=0,num=0;

while(k>=0)

{

x[k]++;

while(x[k]<8&&Place(k)==1)

x[k]++;

if(x[k]<8&&k==7)

{

printf("第%d个解是:

",++num);

for(inti=0;i<8;i++)

printf("<%d,%d>\t",i+1,x[i]+1);

printf("\n");}

else

if(x[k]<8&&k<7)//上有皇后未摆放

k=k+1;

else

x[k--]=-1;//重置x[k],回溯,重新摆放皇后k

}

return0;

}

结果:

 

3、各模块功能说明:

(1)Place:

放置皇后的位置。

 

(2)主函数:

4、总结:

通过这次的课程设计,让我了解了八皇后这一经典的问题。

同时让我更好地掌握了栈思想以及一维数组等知识,也包括一些书本上没有的东西,这对我以后的学习生涯以及将来步入社会起到很大的帮助。

这次课程设计虽然花了我一些时间和精力,但很值得,因为它对我能力提高起到很大帮助。

这次课程设计也提醒我以前知识的匮乏,它给我敲响了警钟,让我意识到自己基础的不扎实.当然这次实验还是有很多问题的。

这个学期数据结构的学习还是具有相当大的意义,它从一个程度上改变了我们的编程思想,如何将一个程序快速而又准备的进行编写,进行编译,都成为了我们思考的重点,也通过这一个学期的学习,我们将数据结构的思想带入到了我们以后的编程学习中去。

在这个阶段,我也明白了,好的思想,不能提留于字面上的认知,还需要的是平时多练多写一些相关的程序,并且通过修改,加入新的算法去尝试改变自己的一些编程思想。

保持更新算法的速度,这才是关键。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1