1. 程式人生 > >bzoj 3101 N皇後構造一種解 數學

bzoj 3101 N皇後構造一種解 數學

int bzoj body tdi line 一個數 hellip enter put

3101: N皇後

Time Limit: 10 Sec Memory Limit: 128 MBSec Special Judge
Submit: 70 Solved: 32
[Submit][Status]

Description

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

Input

一個數n

Output

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

Sample Input

4

Sample Output

2
4
1
3



HINT

100%的數據3<n<1000000。輸出任意一種合法解即可


Source

題解:http://blog.csdn.net/nike0good/article/details/41006705

 1 #include<cstring>
 2 #include<cmath>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstdio>
 6 
 7 using namespace std;
 8 
 9 int n;
10 
11 int main()
12 {
13     scanf("%d"
,&n); 14 if (n%6!=2&&n%6!=3) 15 { 16 for (int i=2;i<=n;i+=2) 17 printf("%d\n",i); 18 for (int i=1;i<=n;i+=2) 19 printf("%d\n",i); 20 } 21 else 22 { 23 int k=n>>1; 24 if (k&1) 25 {
26 for (int i=k;i<=n-1;i+=2) 27 printf("%d\n",i); 28 for (int i=1;i<=k-1;i+=2) 29 printf("%d\n",i); 30 for (int i=k+3;i<=n;i+=2) 31 printf("%d\n",i); 32 for (int i=2;i<=k+1;i+=2) 33 printf("%d\n",i); 34 } 35 else 36 { 37 for (int i=k;i<=n;i+=2) 38 printf("%d\n",i); 39 for (int i=2;i<=k-1;i+=2) 40 printf("%d\n",i); 41 for (int i=k+3;i<=n-1;i+=2) 42 printf("%d\n",i); 43 for (int i=1;i<=k+1;i+=2) 44 printf("%d\n",i); 45 } 46 if (n&1)printf("%d\n",n); 47 } 48 }

bzoj 3101 N皇後構造一種解 數學