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

浙公网安备 33010602011771号