A39819. 合影效果
填空题
较易
知识点
题目描述
合影效果
题目描述
小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?
输入:
第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。
后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。
输出:
n个浮点数,模拟站好队后,拍照者眼中从左到右每个人的身高。每个浮点数需保留到小数点后2位,相邻两个数之间用单个空格隔开。
样例输入:
6
male 1.72
male 1.78
female 1.61
male 1.65
female 1.70
female 1.56
样例输出:
1.65 1.72 1.78 1.70 1.61 1.56
参考答案
#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
struct human {
//定义一个数组包括性别,身高
string sex;
double height;
}
hu[45],m[45],fe[45];
int com1(human x,human y) {
//定义一个函数:从低到高排序
return x.height<y.height;
}
int cmp(human n,human m) {
//定义一个函数:从高到低排序
return n.height>m.height;
}
int main() {
int n,j=0,k=0;
cin>>n;
for (int i=0;i<n;i++) {
cin>>hu[i].sex>>hu[i].height;
//输入性别,身高
if(hu[i].sex=="male")//如果是男生就放在m结构体中
m[j++]=hu[i]; else if(hu[i].sex=="female")//如果是女生就放在fe结构体中
fe[k++]=hu[i];
}
sort(m,m+j,com1);
//对男生按低到高排序
sort(fe,fe+k,cmp);
//对女生按高到低排序
for (int a=0;a<j;a++)//先输出男生身高
printf("%.2lf ",m[a].height);
for (int b=0;b<k;b++)//再输出女神身高
printf("%.2lf ",fe[b].height);
return 0;
}
上一题
下一题