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...