80分,求调

P1104 生日

结构体部分还能缩减 ```c #include <bits/stdc++.h> using namespace std; int n; struct node{ string name; int y,m,d,id; }a[105]; int cmp(node a,node b) { if(a.y!=b.y) { return a.y<b.y; } else if(a.y==b.y&&a.m!=b.m) { return a.m<b.m; } else if(a.y==b.y&&a.m==b.m&&a.d!=b.d) { return a.d<b.d; } else if(a.y==b.y&&a.m==b.m&&a.d==b.d&&a.id!=b.id) { return a.id>b.id; } } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d; 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 Ilovemywinnie @ 2023-06-03 18:00:52


### 不说废话,直接开始 ```cpp #include<bits/stdc++.h>//~~~懒~~~ using namespace std; int y[1000],m[1000],d[1000];//出生年y,月m,日d string s;//姓名s int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>s[i]>>y[i]>>m[i]>>d[i];//输入 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if (y[i]<y[j]||y[i]==y[j]&&m[i]<m[j]||y[i]==y[j]&&m[i]==m[j]&&d[i]<=d[j])//比较 { swap(s[i],s[j]);//swap为交换函数,即交换s[i]和s[j] swap(y[i],y[j]);//也可以用结构体进行快排 swap(m[i],m[j]); swap(d[i],d[j]); } for(int i=1;i<=n;i++) cout<<s[i]<<endl;//输出 return 0; }
by YGW6 @ 2023-06-03 18:01:32


@[lanmengfei](/user/625711)
by YGW6 @ 2023-06-03 18:02:52


@[YGW6](/user/938950) 你这。。。。。暴力枚举直接O(n^2)是吧....
by lanmengfei @ 2023-06-03 18:22:38


@[lanmengfei](/user/625711) 这是之前打的,懒得改了...但能过 ~~主要是嫌麻烦~~ 嘻嘻
by YGW6 @ 2023-06-03 20:34:50


@[lanmengfei](/user/625711) 注意**输入靠后的同学先输出**
by dingronghan01 @ 2023-06-17 16:47:09


@[dingronghan01](/user/657904) 哦哦哦谢谢
by lanmengfei @ 2023-06-18 17:33:14


|