N皇后問題公式解

2021-06-27 15:09:08 字數 886 閱讀 9207

分類:

一、當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為奇數)

下面是poj 3239的**:

#includeusing namespace std;

int main()

{ int n,k,i;

while(1)

{cin>>n;

if(n==0)break;

if(n%6!=2 && n%6!=3)

{if(n%2==0)

{for(i=2;i<=n;i+=2)cout<

回溯法解N皇后問題

回溯法解n皇后問題,要求就不說了,直接說思路和上 回溯法解n皇后問題 使用乙個一維陣列表示皇后的位置 其中陣列的下標表示皇后所在的行 陣列元素的值表示皇后所在的列 這樣設計的棋盤,所有皇后必定不在同一行 假設前n 1行的皇后已經按照規則排列好 那麼可以使用回溯法逐個試出第n行皇后的合法位置 所有皇后...

回溯法解n皇后問題

n皇后問題 在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n皇后問題等價於在n n格的棋盤上放置n個皇后,任何2個皇后不放在同一行或同一列或同一斜線上。輸出可行的棋盤排布,以及可行解的個數。用回溯法解n皇后問題,以下給出遞迴回溯...

菜雞解N皇后問題

菜雞能有什麼好想法?暴力就完了。在一張n n的西洋棋棋盤上,放置n個皇后,使得所有皇后都無法互相直接攻擊得到,皇后可以直接攻擊到她 所在的橫行,豎列,斜方向上的棋子 現在輸入乙個整數n,表示在n n的棋盤上放n個皇后,請輸出共有多少種使 得所有皇后都無法互相直接攻擊得到的方案數。例如下面這樣的擺法,...