牛客網刷題 N皇后問題

2021-10-20 18:49:16 字數 1467 閱讀 2074

n皇后問題是指在n*n的棋盤上要擺n個皇后,

要求:任何兩個皇后不同行,不同列也不再同一條斜線上,

求給乙個整數n,返回n皇后的擺法數。

輸入

8

輸出

回溯法:要保證n個皇后不同行,不同列,不同斜線,只需要滿足下面3個條件即可

(1)n個皇后不同行,通過s1儲存該行上的皇后

(2)n個皇后不同左上角如圖斜線方向,通過s2儲存該方向的皇后。我們會發現位於統一斜線上的座標滿足,x座標和y座標的和相等。例如:(1,0) (0,1)在同一斜線上,和均為1

(3)n個皇后不同右下角如圖斜線方向,通過s3儲存該方向的皇后。我們會發現位於統一斜線上的座標滿足,x座標和y座標的差相等。例如:(5,0) (6,1)在同一斜線上,差均為5

// 思路1

public

class

solution

public

void nqueen (

int n,

int row, set

s1, set

s2, set

s3)else

// 判斷左上角方向

int d1 = row + i;

if(s2.

contains

(d1)

)// 判斷左下角方向

int d2 = row - i;

if(s3.

contains

(d2)

) s1.

add(i)

; s2.

add(d1)

; s3.

add(d2)

;nqueen

(n, row +

1, s1, s2, s3)

; s1.

remove

(i);

s2.remove

(d1)

; s3.

remove

(d2);}}}}

時間複雜度分析:

o(n!):其中 n 是皇后數量。

空間複雜度分析:

o(n):其中 n 是皇后數量。空間複雜度主要取決於遞迴呼叫層數、記錄每行放置的皇后的列下標的陣列以及三個集合,遞迴呼叫層數不會超過 n,每個集合的元素個數都不會超過 n。

小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試

n皇后問題-牛客網(ps:檔案的解法會超時,效果版可以參考題解,這裡說的主要是方法)

牛客網刷題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...

牛客網刷題

時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...

牛客網刷題筆記

今天在牛客網刷了一道求最長字串是回文數的長度,剛開始的時候,我用兩個指標,乙個指前邊,乙個指後邊,對比兩個指標指向的值,相等則前邊的指標後移,後邊的指標前移,然後再判斷是否相等,如果不相等,那麼就不是回文數,前邊的指標回到第一次開始的地方,後邊的指標回到第一次開始的地方,前邊的指標再自加後移移位,然...