高质量题解(A21673)
2026-07-24 20:54:55
发布于:上海
12阅读
0回复
0点赞
有需要就直接跳转至文末看完整代码
解题思路:
——典型的结构体排序题目,需要考虑多关键字。
① 先根据题意定义结构体
struct man{//牢大
string s;
int y,m,d,id;
}a[105];
② 对年龄的影响大小由生日的年、月、日构成。 其中,年的影响>月的影响>日的影响;
所以由此可以得出结构体排序的cmp函数
bool cmp(man a,man b){
if(a.y==b.y){
if(a.m==b.m){
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=1;i<=n;i++){
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;i++){
cout<<a[i].s<<endl;
}
return 0;
}
完整代码 :
#include<bits/stdc++.h>
using namespace std;
struct man{
string s;
int y,m,d,id;
}a[105];
bool cmp(man a,man b){
if(a.y==b.y){
if(a.m==b.m){
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=1;i<=n;i++){
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;i++){
cout<<a[i].s<<endl;
}
return 0;
}
小广告
这里空空如也






有帮助,赞一个