分類:
一、當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個皇后,請輸出共有多少種使 得所有皇后都無法互相直接攻擊得到的方案數。例如下面這樣的擺法,...