UVA12541 Birthdates题解

一.题意


一共有 $n$ 个人,输出年龄最大和年龄最小的人的名字。

二.思路


那我们就把这道题看成是输出最大值和最小值,那我们就只需要把原序列按结构体排个序,输出第一个和最后一个就可以了。

那我们就可以直接 sort 一下,再写一个 cmp 函数就可以了

三.代码


cmp 函数咋写呢?我们就只需要和平常一样,先比较年份,年份相同比较月份,月份相同比较日期就可以了

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 205
int n;
struct A{//声明结构体 
    int year,mouth,date;
    char name[25];
}d[N];
bool cmp(A a,A b)
{
    if(a.year!=b.year) return a.year<b.year;//比较年份 
    if(a.mouth!=b.mouth) return a.mouth<b.mouth;//比较月份 
    return a.date<b.date;//比较日期 
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%s%d%d%d",d[i].name+1,&d[i].date,&d[i].mouth,&d[i].year);//输入 
    sort(d+1,d+1+n,cmp);//排序 
    printf("%s\n%s\n",d[n].name+1,d[1].name+1);//输出 
    return 0;
}
posted @ 2021-09-14 13:27  hubingshan  阅读(14)  评论(0)    收藏  举报  来源