当前位置:首页 > 题解目录 > 正文内容

生日

亿万年的星光5年前 (2021-01-28)题解目录5265

【题目描述】

cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。

【输入描述】

有2行,

第1行为OI组总人数n;

第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。

【输出描述】

有n行,

即n个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)

【样例输入】

3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

【样例输出】

Luowen
Yangchu
Qiujingya

【数据规模】

1<n<100

length(s)<20

【参考答案】

#include<bits/stdc++.h>
using namespace std;
struct birthday
{
   string name; //学生姓名
    int year; //生日的年份
   int month; //生日的月
   int day; //生日的天
   int order;     //用户的输入顺序
};
birthday br[105]; //初始化
bool cmp(birthday x, birthday y)
{
   if(x.year!=y.year)
       return x.year<y.year; //先按照年份排序(年份小的年龄大)
   if(x.month!=y.month)
       return x.month<y.month; //按照月份排序
   if(x.day!=y.day)
       return x.day<y.day; //按照日排序
   else
       return x.order>y.order; //同年同月同日生,则按照顺序相反输出
   
}
int main()
{
   int n;
   cin>>n;
   for(int i=0;i<n;i++)
   {
       cin>>br[i].name>>br[i].year>>br[i].month>>br[i].day;
       br[i].order=i; //记录顺序
   }
   sort(br,br+n,cmp);
   for(int i=0;i<n;i++)
       cout<<br[i].name<<endl;
   return 0;
   
   
}



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】苯小猴

【题目描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最...

【题解】报数游戏

【题目描述】路飞在和他朋友们一块玩一个游戏。由于路飞的机智,这个游戏由路飞担任裁判。首先,路飞会给他们一个人一个编号,并且每个人的编号都不相同。接下来的每一个回合,会给一个数,编号不超过它的最大编号的...

【题解】零花钱

零花钱(money.cpp) 【问题描述】 商店里有一件玩具,今天你偶然得知:这件玩具在后⾯的n天里每天的定价(价格可能每天都会改 变),你买了这件玩具后可以以当天的价格卖给商店,...

【题解】加密(2019青岛市程序设计竞赛)

【问题描述】文件加密最简单的方法是把文件的原文中的每个字母用另一个字母来代替。假设原文中只包括26个英文字母(有大写和小写),没有其他符号,且长度不超过100,加密规则如下:原文abcdefghijk...

【题解】背包问题2

【题目描述】设有 n 中物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为 m ,今从 n 种物品中选取若干件(同一物品可以多次选取),使其重量的和小于等于 m...

【题解】阶乘的末尾

【题目描述】n的阶乘定义为n!=1*2*3*……*n  如3!=6   n!通常最后会有很多0,如5!=120  最后有一个0,现在统计n!去除末尾的0后,最后k位是多少...