八皇后問題的解題思路:
總共有92種解法,這裡舉例一種
def place(x, k): #判斷是否衝突
for i in range(1, k):
#x[i] == x[k]判斷是否為同一行
# abs(x[i] - x[k]) == abs(i - k)判斷是否在k個的對角線上
if x[i] == x[k] or abs(x[i] - x[k]) == abs(i - k):
return false
return true
def queens(n):
k = 1 #設定初始皇后為第乙個
x = [0 for row in range(n + 1)]# 設定x列表初始值為0
while k > 0:
x[k] = x[k] + 1 # 在當前列的下一列開始
x[k] = x[k] + 1
if x[k] <= n:# 判斷是否為最後乙個,不是就執行下一行
if k == n:# 是最後乙個皇后,退出
break
else: # 不是,則處理下一行皇后
k = k + 1 #執行下一行
x[k] = 0 #初始化,從第一列開始
else:#n列均不滿足,回溯到上一行
x[k] = 0 #初始化列到第一列
k = k - 1 #回溯到上一行
return x[1:] #返回1-8個皇后的位置
print(queens(8))
回朔法 八皇后問題
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。假設八個皇后的位置分別用x1到x8表示,那麼xi可以取的值為1 8...
八皇后問題的回朔法求解
1.問題背景 前幾天上演算法課的時候老師簡單介紹了一下八皇后問題,課後感覺這個問題挺有趣的所以自己編了一下,發現對於我這種初學者來說還是有一定的難度,下面我詳細分析一下這個問題。八皇后問題,是乙個古老而著名的問題,是 回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8...
20190915學習PYTHON 八皇后問題
20190915學習python 八皇后問題 剛剛開始學習python。先試完成乙個經典的深度優先演算法,就是八皇后問題。一邊學一邊查,完成了 python八皇后問題求解 2019 9 15 n 8 數量 nsolve 0 解的個數 a 0 n 用於儲存各行上皇后的位置,使用列表 檢查乙個位置第p行...