0
已解决
胡景波
中级光能
中级光能
1550 祝福短信
题目描述 Description
老师想在学生过生日的时候发送祝福信息,现在想统计所有学生的生日,并按照从小到大的顺序排列,以方便老师操作。现在老师没有时间,请你编写一个程序帮他完成。
输入描述 Input Description
有2行,
第1行为学校总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d,每个变量用空格隔开。
输出描述 Output Description
有n行,
即n个生日从小到大同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
样例输入 Sample Input
3
Wangxiang 1992 4 23
Liujunyi 1993 10 13
Zhangtianyu 1991 8 1
样例输出 Sample Output
Zhangtianyu
Wangxiang
Linjunyi
数据范围及提示 Data Size & Hint
数据规模
1<n<100
姓名字母长度<20
#include<iostream> #include<algorithm> using namespace std; struct year{ string name; int year,month,day; }a[10000]; bool cmp(year x,year 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; return x.name>y.name; } int n; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].name>>a[i].year>>a[i].month>>a[i].day; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ cout<<a[i].name<<endl; } return 0; }
90
90
90
90
0
0
丁博扬
中级天翼
中级天翼
0
胡钰妍
资深光能
资深光能
头文件
- #include<iostream>
- #include<algorithm>
- #include<string>
- using namespace std;
- struct a{
结构体
- string l;
- int b,c,m,n;
- }d[10010];
函数
- bool cmp(a x,a y)
- {
- if(x.b!=y.b)
- return x.b<y.b;
- if(x.c!=y.c)
- return x.c<y.c;
- if(x.m!=y.m)
- return x.m<y.m;
- return x.n>y.n;
- }
- int main()
- {
定义
int h,i,j,k;
输入
- cin>>h;
- for(j=0;j<h;j++)
- {
- cin>>d[j].l>>d[j].b>>d[j].c>>d[j].m;
- d[j].n=j;
- }
排序
sort(d,d+h,cmp);
输出
- for(j=0;j<h;j++)
- cout<<d[j].l<<endl;
结束
return 0;
}
望采纳!!!!没豆了