题意:给你1-n,问你最多能安排几个数相邻数字不相邻的位置。

解题思路:插空法。

解题代码:

 1 // File Name: a.cpp
 2 // Author: darkdream
 3 // Created Time: 2015年04月13日 星期一 00时00分57秒
 4 
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25 
26 using namespace std;
27 int n ;
28 int main(){
29     scanf("%d",&n);
30     if(n == 1 || n== 2)
31     {
32         printf("1\n1\n");
33         return 0 ; 
34     }
35     if(n == 3 )
36     {
37      printf("2\n1 3\n");
38      return 0 ; 
39     }
40     if(n== 4)
41     {
42         printf("4\n3 1 4 2\n");
43         return 0 ; 
44     }
45     if(n% 2== 0)
46     {
47       printf("%d\n",n);
48       for(int i = 1;i <= n/2 ;i ++)
49           printf("%d %d ",i,i+n/2);
50     }else{
51       printf("%d\n",n);
52       for(int i = 1;i <= n/2 ;i ++)
53           printf("%d %d ",i,i+n/2+1);
54       printf("%d\n",n/2+1);
55     }
56 return 0;
57 }
View Code

 

posted on 2015-04-13 17:32  dark_dream  阅读(200)  评论(0编辑  收藏  举报