华为OJ-奥运会排行榜C++

1、首先gold medal数量多的排在前面;2、其次silver medal数量多的排在前面;3、然后bronze medal数量多的排在前面;4、若以上三个条件仍无法区分名次,则以国家名称的字典序排定
我们假设国家名称不超过20个字符、各种奖牌数不超过100,且大于等于0.
输入
第一行输入一个整数N(0<N<21),代表国家数量;
然后接下来的N,每行包含一个字符串Namei表示每个国家的名称,和三个整数Gi、Si、Bi表示每个获得的gold medal、silver medal、bronze medal的数量,以空格隔开,如(China 51 20 21)
输出
输出奖牌榜的依次顺序,只输出国家名称,各占一行。
主要是考察sort的用法

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using std::cin;
using std::cout;
using std::endl;
struct Rank
{std::string country_name;unsigned gold;unsigned silver;unsigned brozen;
};
bool operator<(const Rank& r1, const Rank& r2);
void showRank(const Rank& rr);int main()
{std::vector<Rank> ranks;unsigned n;cin >> n;Rank rr;for (unsigned i = 0; i < n; ++i){cin >> rr.country_name;cin >> rr.gold >> rr.silver >> rr.brozen;ranks.push_back(rr);}sort(ranks.begin(), ranks.end());for_each(ranks.rbegin(), ranks.rend(), showRank);return 0;
}
bool operator<(const Rank& r1, const Rank& r2)
{if (r1.gold < r2.gold)return true;else if (r1.gold == r2.gold && r1.silver < r2.silver)return true;else if (r1.gold == r2.gold && r1.silver == r2.silver && r1.brozen < r2.brozen)return true;else if (r1.gold == r2.gold && r1.silver == r2.silver &&  r1.brozen == r2.brozen&& r1.country_name > r2.country_name)//按字母顺序的逆序排序return true;elsereturn false;
}void showRank(const Rank& rr)
{cout << rr.country_name << endl;
}

当然也可以修改成如下的代码:

    sort(ranks.begin(), ranks.end());for_each(ranks.begin(), ranks.end(), showRank);//注意这里修改成begin(),end()return 0;
}
bool operator<(const Rank& r1, const Rank& r2)
{if (r1.gold > r2.gold)//注意,原来从这里起及随后的两个小于号都改成了大于号,这个可以是大于也可//是小于号,operator<的小于号作用对象为结构对象,而这里的大于及小于号作用对象是结构成员,所以没有联系return true;else if (r1.gold == r2.gold && r1.silver > r2.silver)return true;else if (r1.gold == r2.gold && r1.silver == r2.silver && r1.brozen > r2.brozen)return true;else if (r1.gold == r2.gold && r1.silver == r2.silver &&  r1.brozen == r2.brozen&& r1.country_name < r2.country_name)//按字母顺序排序return true;elsereturn false;
}

增加python代码:

while True:try:n = int(input())matrix = []for i in range(n):s = input().split()matrix.append(s)matrix.sort(key = lambda x :(-int(x[1]),-int(x[2]),-int(x[3]),x[0]))#这才是正确的方法!!!for item in matrix:print(item[0])except:break

华为OJ-奥运会排行榜C++相关推荐

  1. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  2. 【华为OJ】【042-矩阵乘法】

    [华为OJ][算法总篇章] [华为OJ][042-矩阵乘法] [工程下载] 题目描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 这个矩阵的每个元 ...

  3. 【华为OJ】【067-求最小公倍数】

    [华为OJ][算法总篇章] [华为OJ][067-求最小公倍数] [工程下载] 题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数. ...

  4. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  5. 华为OJ(MP3光标移动)

    描述: MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲.为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌. 现在要实现通过 ...

  6. 【华为OJ】【099-MP3光标位置】

    [华为OJ][算法总篇章] [华为OJ][099-MP3光标位置] [工程下载] 题目描述 MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲 ...

  7. 【华为OJ】【097-24点游戏算法】

    [华为OJ][算法总篇章] [华为OJ][097-24点游戏算法] [工程下载] 题目描述 给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入: 4个1-10的数字.[数字允许重复,测 ...

  8. 【华为OJ】【107-24点运算】

    [华为OJ][算法总篇章] [华为OJ][107-24点运算] [工程下载] 题目描述 计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算 ...

  9. 【华为OJ】【063-字符串分割】

    [华为OJ][算法总篇章] [华为OJ][063-字符串分割] [工程下载] 题目描述 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不 ...

  10. java oj题及答案_华为OJ答案(java版)题目2

    华为OJ&答案(java版) 1. 功能:等差数列 2,5,8,11,14.... 输入:正整数N >0 输出:求等差数列前N项和 返回:转换成功返回 0 ,非法输入与异常返回-1 pu ...

最新文章

  1. 搜索引擎惩罚的五种最大原因
  2. 13、计算机图形学——阴影贴图
  3. 结构型模式:外观模式(门面模式)
  4. 为什么python中不需要变量名和变量类型声明?
  5. nanopi 创建共享文件夹
  6. 三级栏目选项卡 html,李长河 中文主页 实验题目三级页面(隐藏栏目,用于放置对应三级页面) 中国地质大学(武汉)教师个人主页系统...
  7. mysql排插问题_MySQL一次数据插入故障记录
  8. Emmet 文档下载,所有快捷键总结
  9. java调整图片透明度
  10. python脚本-fence栅栏密码
  11. Adobe Flash Player不是最新版本,导致视频无法播放?
  12. 这些年,阿里巴巴技术大牛们曾经写过哪些书籍!
  13. Pandas学习-Task05
  14. 「TCG 规范解读」初识基础设施工作组
  15. 2023第八届少儿模特明星盛典 小超模李迦曈 担任全球赛小主持人
  16. TP-LINK TL-WDN6200在Ubuntu 1804下使用
  17. ResourceDictionary
  18. python class函数报错_24 【python入门指南】class
  19. C语言基础篇02:单链表实现学生成绩管理系统
  20. 大数据时代:9种从大数据中获取商业价值的方法

热门文章

  1. python物性库能调用哪些物质_Python获取流体热物性(1):CoolProp和python-refprop
  2. oracle中聚合比较函数,Oracle 分析函数与聚合函数区别
  3. mysql 5.5 字符集_mysql 5.5字符集问题
  4. (软件项目管理)项目会议纪要模板
  5. 关于毕业论文格式修改若干问题
  6. OptiSystem器件学习(一)
  7. dwf怎么合成一个_PC-3000 Data Extractor如何将一系列Bin文件合并为一个镜像文件
  8. JS利用canvas画布功能画时钟
  9. 使用javascript下载网络图片
  10. (转)清华学霸演讲稿:永远不要说你已经尽力了