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

生日

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

【题目描述】

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;
   
   
}



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

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

    分享给朋友:

    相关文章

    【题解】骨牌铺方格

    【题解】骨牌铺方格

    【题目描述】有1×n(n<=50)的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格,请问有多少种铺法?例如当n=3时为1×3的方格。此时用1×1、1×2和1×3的骨牌铺满方格,共有四种铺...

    【题解】基因锁

    【题目描述】小X终于意识到需要花大力气减重了,他询问了若干个减重专家后决定采用最适合年轻人的运动减重方案,考虑再三,小X最终选择了打羽毛球的方式,一个原因是小X的小伙伴大都喜欢打羽毛球,其次是打羽毛球...

    【题解】黑白棋子移动

    【题目描述】有2n个棋子(n≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,如下图为n=5的情形:○○○○○●●●●●移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可...

    【题解】数学游戏

    【题目描述】Kri 喜欢玩数字游戏。 一天,他在草稿纸上写下了t 对正整数(x,y) ,并对于每一对正整数计算出了z=x*y*gcd(x,y);可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一...

    数的拆分(1)

    【题目描述】任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。例如:当n=7时7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2...

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

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