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;
}
望采纳!!!!没豆了

