首页 > 其他 > 详细

bzoj 3101 N皇后构造一种解 数学

时间:2018-01-22 01:02:36      阅读:116      评论:0      收藏:0      [点我收藏+]

标签: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皇后构造一种解 数学

标签:int   bzoj   body   tdi   line   一个数   hellip   enter   put   

原文:https://www.cnblogs.com/fengzhiyuan/p/8326175.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号