WA on #5,求条

P1104 生日

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


|