【精选】八皇后问题.pptVIP

  • 7
  • 0
  • 约1.35千字
  • 约 6页
  • 2018-03-27 发布于贵州
  • 举报
【精选】八皇后问题

“ ” “ ” 八皇后问题 一.问题描述 八皇后问题是十九世纪著名数学家高斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后,使其不能互相攻击,即任意的两个皇后不能处在同意行,同一列,或同意斜线上。可以把八皇后问题拓展为n皇后问题,即在n*n的棋盘上摆放n个皇后,使其任意两个皇后都不能处于同一行、同一列或同一斜线上。 二.问题分析? 显然,每一行可以而且必须放一个皇后,所以n皇后问题的解可以用一个n元向量X=(x1,x2,.....xn)表示,其中,1≤?i≤?n且1≤?xi≤?n,即第n个皇后放在第i行第xi列上。 由于两个皇后不能放在同一列上,所以,解向量X必须满 足的约束条件为:xi≠?xj; 若两个皇后的摆放位置分别是(i,xi)和(j,xj),在棋盘上斜率为-1的斜线上,满足条件i-j=xi-xj;在棋盘上斜率为1的斜线上,满足条件i+j=xi+xj; 综合两种情况,由于两个皇后不能位于同一斜线上,所以, 解向量X必须满足的约束条件为: |i-xi|≠?|j-xj| 代码如下: #includestdio.h #includemath.h int?x[100]; bool?place(int?k)//考察皇后k放置在x[k]列是否发生冲突 { ????int?i; ????for(i=1;ik;i++) ??????

文档评论(0)

1亿VIP精品文档

相关文档