题意:给你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 }
时间: 2024-11-12 02:48:27