学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
又到了一年毕业季,学校里到处都是拍毕业照的人,小猴已经和各种朋友拍了一上午,现在到了班级合影的时间了。
小猴班里一共有N名同学,现在站成一排,其中从左往右数第i个人的身高为 h i h_i hi,但是现在的队伍看着太难看了,我们说一个在好看的队伍中,每个人的身高满足 h 1 ≤ h 2 ≤ ⋯ ≤ h t − 1 ≤ h t , h t + 1 ≥ ⋯ ≥ h n − 1 ≥ h n h_1\le h_2\le \dots \le h_{t-1}\le h_t,h_{t+1}\ge \dots \ge h_{n-1}\ge h_n h1≤h2≤⋯≤ht−1≤ht,ht+1≥⋯≥hn−1≥hn,其中 h 1 , h 2 , … , h t h_1,h_2,\dots,h_t h1,h2,…,ht均为奇数, h t + 1 , h t + 2 , … , h n h_{t+1},h_{t+2},\dots,h_n ht+1,ht+2,…,hn均为偶数。现在小猴想要让拍照的队伍变得好看一些,你能帮他算一算最后的队伍是什么样的么?
【输入】
第一行一个正整数N,表示同学的个数;
第二行N个正整数 h 1 , h 2 , … , h N h_1,h_2,\dots,h_N h1,h2,…,hN,表示每个同学的身高。
【输出】
一行用空格隔开的N个正整数,表示整理后队伍的身高。
【输入样例】
5
160 175 138 174 137
【输出样例】
137 175 174 160 138
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int h[100010];
bool cmp(int x, int y)
{
if (x%2==1 && y%2==1) return x < y;
if (x%2==0 && y%2==0) return x > y;
return x%2 > y%2; // 1>0
}
int main()
{
int n;
cin >> n;
for (int i=1; i<=n; i++) {
cin >> h[i];
}
sort(h+1, h+n+1, cmp);
for (int i=1; i<=n; i++) {
cout << h[i] << " ";
}
return 0;
}
【运行结果】
5
160 175 138 174 137
137 175 174 160 138