回 帖 发 新 帖 刷新版面

主题:求解~~~(高手来~~)

问一下:高斯的八皇后问题怎么解?
    请给出详细解释~~~~
 八皇后问题:会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8*8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。

回复列表 (共5个回复)

沙发

你可以搞个8层循环。
每个循环里,对外层循环没有占用的点进行条件分析,成立,进入下层;不成立,更换位置。
当然,这个思路简单,编程罗索。
采用“递归”方法,则思路麻烦,但简洁。

板凳


用穷举法,八个循环,每个控制一个皇后的位置,每个都丛1 到64,代表64个格。[em11]

3 楼

谢谢~~ 我去试试~~

4 楼


我有一个新发现:手工比计算机还简单!
第一步,画8*8的格子
第二步,随便方一个“皇后”,删掉同行、同列、45度斜线的所有鸽子;
        ………………
这样应该就可以了。
当然,用计算机这样模拟,也可以。

5 楼

n 皇后要不要?
CLS
INPUT n
DIM a(n)
t# = TIMER
i = 1
WHILE i > 0
 a(i) = a(i) + 1
  IF a(i) > n THEN
   a(i) = 0
   i = i - 1
  ELSE
   f = -1
   FOR j = 1 TO i - 1
    IF a(i) = a(j) OR i + a(i) = j + a(j) OR i - a(i) = j - a(j) THEN f = 0: EXIT FOR
   NEXT j
  IF f = -1 THEN
   IF i = n THEN GOSUB 10: S = S + 1 ELSE i = i + 1
  END IF
 END IF
WEND
PRINT S, TIMER - t#
END
10
FOR k = 1 TO i
 PRINT USING "#"; a(k);
NEXT k
PRINT
RETURN

我来回复

您尚未登录,请登录后再回复。点此登录或注册