八皇后問題python實現

2021-09-27 08:24:38 字數 988 閱讀 8828

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...