问题描述
例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3]。换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, an-2, a3, …。即从最大到最小,次大到次小,依次排序。
输入
共两行。
第一行一个数字n(1≤n≤1000),表示序列长度。
第二行为一个长度为n的无序数字串。
输出
一个按规则排好序的数字串。
样例输入
5
1 2 3 4 5
样例输出
5 1 4 2 3
#include <bits/stdc++.h> using namespace std; int t[1001]; int main() { int a[1005],b[1005],n; while(cin>>n) { for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); if(n & 1)//奇数 { int s=1; for(int i=n;i>n/2+1;i--) { b[s]=a[i]; s+=2; } int t=2; for(int i=1;i<n/2+1;i++) { b[t]=a[i]; t+=2; } b[n]=a[n/2+1]; } else//偶数 { int s=1; for(int i=n;i>=n/2+1;i--) { b[s]=a[i]; s+=2; } int t=2; for(int i=1;i<=n/2;i++) { b[t]=a[i]; t+=2; } } for(int i=1;i<=n;i++) cout<<b[i]<<" "; cout<<endl; } return 0; }
去年12月去参加了一下校赛(一题没A,就看了几个题),对F题有点印象,结果今天上来没看题就按之前的思路写,写错两次(阅读理解硬伤)结果写了大半个小时
思路挺简单的sort排一下,之后赋值给新的数组,学校的OJ好像并不开放,没法跑一下,但样例是过了