0
已解决
李奕歌
初级天翼
初级天翼
题目描述 Description
酷町猫想统计小伙伴们的生日,并且按照从大到小的顺序排序。请你编程实现。
输入描述 Input Description
有2行,
第1行为酷町猫小伙伴总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。
输出描述 Output Description
有n行,
即n个生日从大到小小伙伴的姓名。(如果有两个小伙伴生日相同,输入靠后的小伙伴先输出)
样例输入 Sample Input
3 Yangchu 1992 4 23 Qiujingya 1993 10 13 Luowen 1991 8 1
样例输出 Sample Output
Luowen Yangchu Qiujingya
数据范围及提示 Data Size & Hint
1<n<100
length(s)<20
WA 0:
#include<bits/stdc++.h>
using namespace std;
struct sr{
string name;
long long y;
int m,d;
};
sr a[105];
bool cmp(sr a,sr b){
if(a.y==b.y)
return a.m>a.m;
if(a.y==b.y&&a.m==b.m)
return a.d>b.d;
return a.y>b.y;
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<"\n";
}
return 0;
}
0
已采纳
王文博
缔造者之神
缔造者之神
就是一个结构体排序
核心:(cmp函数,b为年,c为月,d为日,id为先后顺序)
bool cmp(stu x,stu y)
{
if(x.b!=y.b) ret**n x.b<y.b;
if(x.c!=y.c) ret**n x.c<y.c;
if(x.d!=y.d) ret**n x.d<y.d;
ret**n x.id>y.id;
}
望采纳!
0
0
0
0