Python實現八皇后問題所有實現方式

2021-09-29 08:35:35 字數 1292 閱讀 4599

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8×8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。

原來用c++實現過,現在用python實現,換湯不換藥。利用深搜。python的實現要遵循嚴格縮排。

**如下:

def printf()

: global a,cnt

print

("num^_^"

,cnt)

for i in range(1

,9):

for j in range(1

,9):

if(a[i]

[j]==1)

:print

("x"

,end=

' ')

else

:print

("."

,end=

' ')

print()

; cnt+=1

def judge

(num)

: global cs

for i in range(1

,num):if

((cs[i]

==cs[num])or

(abs

(cs[i]

-cs[num]

)==num-i)):

return false

return true

def dfs

(num)

: global cs,a,cnt;

if(num==9)

:printf()

;else

:for i in range(1

,9):

cs[num]

=i;if

(judge

(num)):

a[num]

[i]=1;

dfs(num+1)

; a[num]

[i]=0;

global cs,a,cnt

cnt=

1cs=[0

]*10a=[[

0for col in range(10

)]for row in range(10

)]dfs(

1)

努力加油a啊,(o)/~

Python實現八皇后問題

八皇后問題是指8 8位的棋盤上,擺8個皇后,使得任意乙個皇后不在其他皇后的同一橫線上,同一豎線上,同一斜線 包括右上到左下斜線和左上到右下斜線 上。這個問題是乙個經典的遞迴問題。八皇后問題主函式 n 0 總的解的數量 defehh sovle deep,graph,path 解決八皇后問題的函式 f...

八皇后問題python實現

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

八皇后問題python實現

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n。當且僅當 n 1 或...