n 皇后問題研究的是如何將 n 個皇后放置在 n×n 的棋盤上,並且使皇后彼此之間不能相互攻擊。
上圖為 8 皇后問題的一種解法。
給定乙個整數 n,返回 n 皇后不同的解決方案的數量。
示例:
輸入: 4
輸出: 2
解釋: 4 皇后問題存在如下兩個不同的解法。
[ [".q..", // 解法 1
"...q",
"q...",
"..q."],
["..q.", // 解法 2
"q...",
"...q",
".q.."]
]]
class solution:
vis=[0]*100
sub=[0]*200
add=[0]*200
ans=0
def totalnqueens(self, n: int) -> int:
def dfs(i):
if i==n+1:
self.ans+=1
return
j=1while j<=n:
if not self.vis[j] and not self.sub[i-j+100] and not self.add[i+j]:
self.vis[j]=self.sub[i-j+100]=self.add[i+j]=1
dfs(i+1)
self.sub[i-j+100]=self.add[i+j]=self.vis[j]=0
j+=1
dfs(1)
return self.ans
八皇后 N皇后問題 遞迴實現
八皇后問題,即在乙個棋盤上,每行都可以放置乙個皇后,但每個皇后都不能影響其他皇后的安全,即所有皇后的位置不能在同一直線上 解決問題方法及思想 遞迴 在使用遞迴之前首先要準備好兩個函式實現 1.判斷此時此刻位置是否安全 只需要判斷元素上方,左上方,右上方是否安全,且只要有乙個位置不安全,則結束判斷 2...
java實現N皇后問題
n皇后問題描述 將 n 個皇后擺放在乙個 n x n 的棋盤上,使得每乙個皇后都無法攻擊到其他皇后。深度優先遍歷的典型案例。程式輸入 n的個數 需 4 棋盤上任意乙個位置 程式輸出 滿足問題需求的棋盤座標 程式 如下 node類用於封裝皇后的棋盤位置資訊 public class node publ...
N皇后非遞迴實現
馬上上課了,以後有時間再細說。回溯 偷個懶,從老師ppt上拷過來 狀態樹 解空間樹 回溯法的求解過程實質上是乙個先序遍歷一顆狀態樹的過程,只是這棵狀態樹不是預先建立的,而是隱含在遍歷過程中。可以通過畫乙個四皇后的解空間樹來很嗨的理解,理解回溯的過程,有時間就更 約束函式 節點與解 完全解 部 死節點...