八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於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 或...