A21637.生日 结构体排序题解
2024-07-01 21:15:33
发布于:上海
53阅读
0回复
0点赞
入团链接
这题很明显是结构体排序题,关键点在于cmp函数
#include<iostream>
#include<algorithm> //STL通用算法,为此题中sort函数的头文件
using namespace std;
struct bd{
string s; //姓名
int y; //出生年
int m; //出生月
int d; //出生日
int id; //编号,若有两个同学生日相同,输入靠后的同学先输出,也就是id大的先输出
}a[105]; //结构体数组,注意不要忘记;
bool cmp(bd a,bd b){
//若两人出生年相同,判断出生月
if(a.y==b.y){
//若两人出生年和出生月相同,判断出生日
if(a.m==b.m){
//若两人出生年和出生月和出生日都相同,也就是生日日期相同,判断输入顺序,即id大小
if(a.d==b.d){
return a.id>b.id;
}
return a.d<b.d;
}
return a.m<b.m;
}
return a.y<b.y;
}
int main(){
int n;
cin>>n;
for (int i=0;i<n;++i){
//依次输入姓名、出生年、出生月、出生日
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
a[i].id=i; //id
}
//sort排序,从需要排序的内容的第一项至最后一项+1,bool类型的cmp函数在倒序时必须写
sort(a,a+n,cmp);
for (int i=0;i<n;++i){
cout<<a[i].s<<endl;
}
return 0;
}
点个赞吧~
这里空空如也
有帮助,赞一个