BZOJ 3101 N皇后 構造

2021-09-09 02:09:30 字數 900 閱讀 9648

3101: n皇后

n*n的棋盤,在上面擺下n個皇后,使其兩兩間不能相互攻擊….

乙個數n

第i行表示在第i行第幾列放置皇后

100%的資料3不要問我這結論哪兒來的,我也不知道

以下是找到的n皇后一組解得構造法:

一、當n mod 6 != 2 或 n mod 6 != 3時,有乙個解為:

2,4,6,8,...,n,1,3,5,7,...,n-1 (n為偶數)

2,4,6,8,...,n-1,1,3,5,7,...,n (n為奇數)

(上面序列第i個數為ai,表示在第i行ai列放乙個皇后;... 省略的序列中,相鄰兩數以2遞增。下同)

二、當n mod 6 == 2 或 n mod 6 == 3時,

(當n為偶數,k=n/2;當n為奇數,k=(n-1)/2)

k,k+2,k+4,...,n,2,4,...,k-2,k+3,k+5,...,n-1,1,3,5,...,k+1 (k為偶數,n為偶數)

k,k+2,k+4,...,n-1,2,4,...,k-2,k+3,k+5,...,n-2,1,3,5,...,k+1,n (k為偶數,n為奇數)

k,k+2,k+4,...,n-1,1,3,5,...,k-2,k+3,...,n,2,4,...,k+1 (k為奇數,n為偶數)

k,k+2,k+4,...,n-2,1,3,5,...,k-2,k+3,...,n-1,2,4,...,k+1,n (k為奇數,n為奇數)

#includeusing namespace std;

int main()

else

else if(k%2==0&&n%2==1)

else if(k%2==1&&n%2==0)

else

}}

N皇后 構造 BZOJ 3101 N皇后

這種題的意義何在.傳送門 以下是找到的n皇后一組解得構造法 一 當n mod 6 2 或 n mod 6 3時,有乙個解為 2,4,6,8,n,1,3,5,7,n 1 n為偶數 2,4,6,8,n 1,1,3,5,7,n n為奇數 上面序列第i個數為ai,表示在第i行ai列放乙個皇后 省略的序列中,...

N皇問題(判斷優化)

n皇后問題是乙個dfs問題,在乙個n n的棋盤上放置n個皇后,每行乙個並使其不能互相攻擊 同一行 同一列 同一斜線上的皇后都會自動攻擊 問有多少種擺法。對於n皇問題,回溯法我們很容易能夠想到,但是這樣的 提交到oj上時間複雜度肯定是無法通過的,那麼我們這裡就介紹一種優化,判斷優化。如圖,行為x,列為...

poj 1321(基礎BFS 類似N皇問題)

poj 1321 題解 在這裡我是用每次處理按行來處理的,這樣在以後的搜尋當中只需樣判斷是否同列就可以了 include include include include includeusing namespace std define rep i,a,b for int i a i b i int...