hcy0919 @ 2025-01-10 20:43:02
为了方便大佬们观看我还把注释标了上去。
#include <bits/stdc++.h>
using namespace std;
int n;
struct sr{
string s;
int y, m, d;
}p[105];
bool cmp(sr x1, sr x2){
if (x1.y != x2.y){//年
return x1.y<x2.y;//年份更小的排前面
}
else{
if (x1.m != x2.m){//月
return x1.m<x2.m;//月份更小的排前面
}
else{
if (x1.d != x2.d){//日
return x1.d<x2.d;//日更小的排前面
}
}
}
}
int main(){
cin>>n;
for (int i=1; i<=n; i++){
cin>>p[i].s;//输入名字
cin>>p[i].y>>p[i].m>>p[i].d;//输入生日
}
sort(p+1, p+n+1, cmp);//排序
for (int i=1; i<=n; i++){
cout<<p[i].s<<endl;//输出名字
}
return 0;
}
by hardme @ 2025-01-10 20:54:30
#include <bits/stdc++.h>
using namespace std;
int n;
struct sr{
string s;
int y, m, d;
}p[105];
bool cmp(sr x1, sr x2){
if (x1.y != x2.y){//年
return x1.y<x2.y;//年份更小的排前面
}
else{
if (x1.m != x2.m){//月
return x1.m<x2.m;//月份更小的排前面
}
else{
if (x1.d != x2.d){//日
return x1.d<x2.d;//日更小的排前面
}
return 0;
}
}
}
int main(){
cin>>n;
for (int i=1; i<=n; i++){
cin>>p[i].s;//输入名字
cin>>p[i].y>>p[i].m>>p[i].d;//输入生日
}
sort(p+1, p+n+1, cmp);//排序
for (int i=1; i<=n; i++){
cout<<p[i].s<<endl;//输出名字
}
return 0;
}
by baiguifan_ @ 2025-01-10 20:54:46
虽然不知道是不是这个问题,但是题面说生日相同的同学输入靠后的先输出,所以应该再记录一下输入顺序吧
by hardme @ 2025-01-10 20:54:56
生日相等的要特判。