0
以下是八皇后問題的解決方案。我添加了一行來執行調試,但它改變了輸出。有人能告訴我這是什麼原因嗎? 請嘗試評論和取消註釋「#print(list(solutions))」,你就會明白我的意思了。謝謝,爲什麼添加「print(list(solutions))」更改腳本的輸出?
BOARD_SIZE = 8
def under_attack(col, queens):
return col in queens or \
any(abs(col - x) == len(queens)-i for i,x in enumerate(queens))
def solve(n):
solutions = [[]]
for row in range(n):
solutions = (solution+[i+1]
for solution in solutions # first for clause is evaluated immediately,
# so "solutions" is correctly captured
for i in range(BOARD_SIZE)
if not under_attack(i+1, solution))
#print(list(solutions))
return list(solutions)
answers = solve(BOARD_SIZE)
print(answers)
在某些語言中 - 比如Clojure - 你的懶惰序列實際上是從一開始就緩存它們的結果,所以你可以多次閱讀它們。 Python不是這些語言之一。 –
如果以下答案之一解決了您的問題,您應該接受它(單擊相應答案旁邊的複選標記)。這有兩件事。它讓每個人都知道你的問題已經得到解決,讓你滿意,並且它可以幫助你幫助你。 [見這裏](http://meta.stackexchange.com/a/5235)的完整說明。 –