为什么WA

P1104 生日

@[dghcs](/user/142720) `如果有两个同学生日相同,输入靠后的同学先输出`
by Cczzyy20150005 @ 2022-11-22 20:45:39


所以还要比较输入的顺序
by Cczzyy20150005 @ 2022-11-22 20:46:25


可是我改成这样也会WA ```cpp #include <algorithm> #include <bits/stdc++.h> using namespace std; struct stu{ string name; int id; int year; int month; int day; }a[105]; bool cmp(stu a,stu b) { if(a.year < b.year) return true; else if(a.year == b.year && a.month < b.month) return true; else if(a.month == b.month && a.day < b.day) return true; else if(a.day == b.day && a.id > b.id) return true; else return false;; } int main() { int n;cin >> n; for(int i = 1;i <= n;i++) {cin >> a[i].name >> a[i].year >> a[i].month >> a[i].day;a[i].id = i;} sort(a+1,a+1+n,cmp); for(int i = 1;i <= n;i++) cout << a[i].name << endl; } ```
by dghcs @ 2022-11-22 21:03:06


@[dghcs](/user/142720) 判断函数里面的else if()括号里面也要把之前判断的等于条件加上(例如else if(a.year==b.year && a.month == b.month && a.day < b.day) Code ```cpp #include <algorithm> #include <bits/stdc++.h> using namespace std; struct stu{ string name; int id; int year; int month; int day; }a[105]; bool cmp(stu a,stu b) { if(a.year < b.year) return true; else if(a.year == b.year && a.month < b.month) return true; else if(a.year==b.year && a.month == b.month && a.day < b.day) return true; else if(a.year==b.year && a.month == b.month && a.day == b.day && a.id > b.id) return true; else return false; } int main() { int n;cin >> n; for(int i = 1;i <= n;i++) {cin >> a[i].name >> a[i].year >> a[i].month >> a[i].day;a[i].id = i;} sort(a+1,a+1+n,cmp); for(int i = 1;i <= n;i++) cout << a[i].name << endl; return 0; } ```
by Castaways @ 2022-11-27 17:03:31


|