wei345 @ 2024-02-18 19:32:02
4,5过不了```cpp
using namespace std;
struct St{
string s;
int y,m,d,id,k;
}a[110];
int cmp(St a,St b){
if(a.k<b.k) return 1;
else if(a.k==b.k) return a.id<b.id;
return 0;
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
a[i].id=i;
a[i].k=a[i].d+a[i].m100+a[i].y10000;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<endl;
}
return 0;
}
by liuzilin114514 @ 2024-02-18 19:42:59
@wei345 给你改的,但是不是你的思路
#include<iostream>
#include<algorithm>
using namespace std;
struct St{
string s;
int y,m,d;
}a[110];
int cmp(St a,St b){
if(a.y<b.y) return 1;
else if(a.y==b.y){
if(a.m<b.m) return 1;
else if(a.m==b.m){
if(a.d<b.d) return 1;
else if(a.d==b.d){
if(a.s>b.s){
return 1;
}
return 0;
}
return 0;
}
return 0;
}
return 0;
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<endl;
}
return 0;
}
by liuzilin114514 @ 2024-02-18 19:43:33
@wei345 不懂再找我
by danlao @ 2024-02-18 19:48:43
@wei345 用冒泡试试。
by liuzilin114514 @ 2024-02-18 19:53:59
@yaodiguoan 冒泡比sort麻烦
by danlao @ 2024-02-18 19:57:04
@liuzilin114514 但我有时用 sort
排序结构体,结果很容易出bag,换成冒泡就可以了。
by liuzilin114514 @ 2024-02-18 20:00:47
@yaodiguoan sort还有bug?
by danlao @ 2024-02-18 20:01:33
@liuzilin114514 我把那道题找出来看看。
by liuzilin114514 @ 2024-02-18 20:01:38
@yaodiguoan 但这道题我用sortAC了
by liuzilin114514 @ 2024-02-18 20:03:03
@yaodiguoan OK
by danlao @ 2024-02-18 20:04:26
@liuzilin114514 @wei345 等一下我找到问题了,题目说“如果有两个同学生日相同,输入靠后的同学先输出”,他这里好像是靠前?