N皇后 II python實現

2021-09-17 07:52:44 字數 1012 閱讀 4165

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上拷過來 狀態樹 解空間樹 回溯法的求解過程實質上是乙個先序遍歷一顆狀態樹的過程,只是這棵狀態樹不是預先建立的,而是隱含在遍歷過程中。可以通過畫乙個四皇后的解空間樹來很嗨的理解,理解回溯的過程,有時間就更 約束函式 節點與解 完全解 部 死節點...