def check(x, y):
# 對當前行的所有行進行
for row in range(x):
column = queens[row]
#不能是同一列
if y == column:
return false
#對角線
if abs(x-row) == abs(y-column):
return false
return true
def print_queens():
for row in range(n):
for column in range(queens[row]):
print "0",
print "#",
for column in range(queens[row]+1, n):
print "0",
print
print "----------------"
#放第row行皇后
def queen_solution(row):
#對所有的列進行遍歷
for column in range(n):
if check(row, column):
#將皇后放進去
queens[row] = column
if row == n: #最後一行,說明成功了
count +=1 #成功的次數
print_queens()
queens[row] = 0 #設為0,下次重新使用
return
queen_solution(row+1)
queens[row] = 0
n = int(raw_input())
queens = [0 for i in range(n)] # 索引是行,裡面的數是列
count = 0
queen_solution(0)
Python實現八皇后問題
八皇后問題是指8 8位的棋盤上,擺8個皇后,使得任意乙個皇后不在其他皇后的同一橫線上,同一豎線上,同一斜線 包括右上到左下斜線和左上到右下斜線 上。這個問題是乙個經典的遞迴問題。八皇后問題主函式 n 0 總的解的數量 defehh sovle deep,graph,path 解決八皇后問題的函式 f...
八皇后問題python實現
八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n。當且僅當 n 1 或...
python實現八皇后
要求 在 8 8 的棋盤上,8 個皇后不在同行 同列 同對角線。1 定義衝突 def conflict state,nextx nexty len state for i in range nexty if abs state i nextx in 0,nexty i return true ret...