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 是一場極其毒瘤的比賽。為了在這次...
牛客網刷題筆記
今天在牛客網刷了一道求最長字串是回文數的長度,剛開始的時候,我用兩個指標,乙個指前邊,乙個指後邊,對比兩個指標指向的值,相等則前邊的指標後移,後邊的指標前移,然後再判斷是否相等,如果不相等,那麼就不是回文數,前邊的指標回到第一次開始的地方,後邊的指標回到第一次開始的地方,前邊的指標再自加後移移位,然...