题目出处:《信息学奥赛一本通》第二章上机练习7

题目描述

汪老师和朋友们去爬山,为美丽的景色所陶醉,想合影留恋。如果他们站成一排,男生全部在左(从拍摄者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?

输入格式

第一行是人数 \(n(2 \le n \le 100)\) ,且至少有一个男生和一个女生。

后面紧跟 \(n\) 行,每行输入一个人的性别(男 male 或 女 female ,说明:"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.7 1.61 1.56

题目分析

这道题目使用结构体排序做。其思想和“整数奇偶排序”类似。

首先我们要开一个结构体 Node ,他的 ch 用于标识性别, h 用于标识身高;并在定义的同时初始化结构体数组 a :

struct Node {

char ch[8]; // 性别

double h; // 身高

} a[101];

比较函数按照“男在前,女在后;男生从矮到高排,女生从高到矮排”的规则来编写:

bool cmp(Node a, Node b) {

if (strcmp(a.ch, b.ch) != 0) // 如果性别不同

return strcmp(a.ch, "male") == 0; // 男生排前面

else if (strcmp(a.ch, "male") == 0) // 如果都是男生

return a.h < b.h; // 矮的排前面

else // 否则(都是女生)

return a.h > b.h; // 高的排前面

}

实现代码如下:

#include

using namespace std;

struct Node {

char ch[8]; // 性别

double h; // 身高

} a[101];

int n;

bool cmp(Node a, Node b) {

if (strcmp(a.ch, b.ch) != 0) // 如果性别不同

return strcmp(a.ch, "male") == 0; // 男生排前面

else if (strcmp(a.ch, "male") == 0) // 如果都是男生

return a.h < b.h; // 矮的排前面

else // 否则(都是女生)

return a.h > b.h; // 高的排前面

}

int main() {

cin >> n;

for (int i = 0; i < n; i ++) cin >> a[i].ch >> a[i].h;

sort(a, a+n, cmp);

for (int i = 0; i < n; i ++) {

if (i) putchar(' ');

printf("%.2f", a[i].h);

}

cout << endl;

return 0;

}

合影效果java_排序入门练习题9 合影效果 题解相关推荐

  1. 谁考了第k名c语言源代码,排序入门练习题3 谁考了第k名 题解

    题目出处:<信息学奥赛一本通>第二章 上机练习1 题目描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名的学生的学号和成绩. 输入格式 输入的第一行包含两 ...

  2. 合影效果java_【蚂蚁课堂】四十三:如何拍酷炫集体照?

    原标题:[蚂蚁课堂]四十三:如何拍酷炫集体照? 作者 | 蚂蚁MaE 编辑 | 萌仔 大家出去玩或者聚会的时候会经常拍合影,但多数人拍出的效果真心不敢恭维. 蚂蚁随手翻了一下同学的QQ空间,发现了这种 ...

  3. 信息学奥赛一本通 1182:合影效果 | OpenJudge NOI 1.10 07:合影效果

    [题目链接] ybt 1182:合影效果 OpenJudge NOI 1.10 07:合影效果 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将男生身高和女生身高分别排序 将男 ...

  4. mysql怎么分组计算逾期率_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  5. MySQL代做题_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  6. html5实现ios长按图标后进入图标排序及删除功能的效果

    2019独角兽企业重金招聘Python工程师标准>>> html5实现ios长按图标后进入图标排序及删除功能的效果 我们知道在ios(国产定制安卓系统基本都有)设备上按下图标,图标就 ...

  7. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

    python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSg l7bz python100经典练习题 pyth ...

  8. 蓝桥杯入门练习题斐波那契数列

    蓝桥杯入门练习题 斐波那契数列 #include <stdio.h> #include <stdlib.h>int main() {long long i, j, f1 = 1 ...

  9. UnityShader入门精要-透明效果

    实现透明效果的方法:1.透明度测试2.透明度混合 深度缓冲Z-buffer决定了哪个物体的那些部分会被渲染在前面,而哪些部分会被遮挡(比较距照相机的距离),渲染一个片元时需要把他的深度值与已经存在在深 ...

最新文章

  1. AMP328音频放大器
  2. Spring框架学习day_03:对于读取文件方式的补充/关于spring框架知识点的学习方式
  3. 辅助类——记录错误信息
  4. idea提交spark任务,内存不足,指定JVM内存的解决方法
  5. [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
  6. 充电电流用软件测试准吗,实验:1A与2.1A对手机充电电流一样的,小伙伴再也不用担心咯...
  7. php正则表达式匹配逗号,数字和逗号PHP正则表达式只
  8. 汇编语言的简答入门--斐波那契数列(递归)
  9. 【elasticsearch】 flink es sink Connection refused
  10. node mysql 模块 封装_node.js基于工厂方法的mysql模块封装
  11. Ros学习笔记(四)创建Ros消息
  12. html设置css字体样式表,HTML 学习笔记 CSS样式(字体)
  13. 海康设备添加到萤石云
  14. 朋友圈的人脉关系的算法
  15. ios崩溃日志分析,无dSYM文件
  16. Mate30安装谷歌全家桶(20200215,成功)
  17. mysql中的mysql数据库不见了
  18. mybatis批量新增和修改
  19. 程序员段子:电脑在手,代码我有!
  20. ps之一寸照片的制作详解(1)

热门文章

  1. windows按照title开启和关闭进程
  2. 鸿蒙玺绶能升级么,属性激增 《诛仙2》强力装备大集合(三)
  3. 三星正在完成android更新,三星发布Android 10更新计划表!又三款机型被选中,有你的吗?...
  4. 方法: 跳转App Store更新你应用的URL究竟该怎么写
  5. 多节点单进程Nodelet
  6. 企业发布重要通知短信收不到该怎么办
  7. 2016淘宝首页改版 细说淘宝首页设计变化史
  8. mysql日期相减返回秒_mysql两个日期相减得到秒、分、天
  9. 有关图像生成的函数 .
  10. 腾达a9服务器无响应,腾达(Tenda)A9设置网站打不开怎么办?