txdt @ 2024-11-29 19:46:28
就是80分,求大佬帮忙改改~
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
struct Student
{
string name;
int year;
int month;
int day;
int num;
};
bool compare(const Student &s1, const Student &s2)
{
return s1.num < s2.num;
}
int main()
{
int n;
cin>>n;
vector<Student> students(n);
for(int i=0;i<n;i++)
{
cin>>students[i].name >> students[i].year >> students[i].month >> students[i].day;
students[i].num = students[i].year * 10000 + students[i].month * 100 + students[i].day;
}
sort(students.begin(),students.end(), compare);
for(int i=0;i<n;i++)
{
cout<<students[i].name<<endl;
}
return 0;
}
我真的不知道怎么办了……
by Arefa @ 2024-11-29 19:56:38
题目要求:如果有两个同学生日相同,输入靠后的同学先输出。
而sort函数具有不稳定性,相同大小的两个变量的前后顺序是不确定的。
因此可以在 struct Student 中加入成员 int id,用于记录此人是第几个输入的。并在compare函数中,加入当s1.num 与 s2.num 相等时,return s1.id > s2.id
by txdt @ 2024-11-29 23:39:52
感谢大佬,过了过了!!