linzhihan16 @ 2024-11-10 09:28:10
本来是WA#6的,改了一个等号。
#include <bits/stdc++.h>
using namespace std;
int n;
struct dc{
string name;
int year;
int month;
int day;
}a[105];
bool cmp(dc a,dc b){
if(a.year<b.year){
return true;
}else if(a.year>b.year){
return false;
}else{
if(a.month<b.month){
return true;
}else if(a.month>b.month){
return false;
}else{
if(a.day<=b.day){//改了这里的等号
return true;
}else{
return false;
}
}
}
}
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<<'\n';
}
return 0;
}
by tzlq_chenyixin @ 2024-11-10 09:55:15
@linzhihan16 不要在cmp比较函数中最好不出现
return true/false;
且
如果有两个同学生日相同,输入靠后的同学先输出
应该在结构体dc中加一个int类型的id,在输入时将a[i].id设为i,在比较函数中加一条
else return a.id>b.id;
by tzlq_chenyixin @ 2024-11-10 09:57:47
if(a.y!=b.y) return a.y<b.y;
else if(a.m!=b.m) return a.m<b.m;
else if(a.d!=b.d) return a.d<b.d;
else return a.id>b.id;
by linzhihan16 @ 2024-11-10 10:05:51
thank you@tzlq_chenyixin