这道题是给你1到n个数字,让你求在尽量多的数字下,两两相邻的数字之间的差不能为1。如何才能让本该相邻的数字不相邻呢?大致方向就是:假如这里有个从1到n个数,1跟n/2对应,2跟n/2+1对应等等。具体到细节还要判断n是奇数还是偶数,还有一些特殊的情况。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
int n,i,j,mid;
while(cin>>n) {
if(n==1 || n==2) {
cout<<1<<endl;
cout<<1<<endl;
}
else {
if(n==3) {
cout<<2<<endl;
cout<<1<<' '<<3<<endl;
}
else if(n==4) {
cout<<4<<endl;
cout<<3<<' '<<1<<' '<<4<<' '<<2<<endl;
}
else {
cout<<n<<endl;
if(n%2) {
for(i=1,j=n/2+1+1; j<=n; i++,j++) {
cout<<i<<' '<<j<<' ';
}
cout<<n/2+1<<endl;
}
else {
for(i=1,j=n/2+1; j<=n; i++,j++) {
if(j==n) cout<<i<<' '<<j<<endl;
else cout<<i<<' '<<j<<' ';
}
}
}
}
}
return 0;
}