3437:练76.1生日排序
练 76.1 生日排序
洛谷:P1104 生日 (结构体排序)
生日排序
生日排序 计蒜客 - T1715
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct T{
string name;
int y,m,d;
int id;
}stu[110];
bool cmp(T a,T b){
if(a.y!=b.y) return a.y<b.y;
if(a.m!=b.m) return a.m<b.m;
if(a.d!=b.d) return a.d<b.d;
return a.id>b.id;
}
int main(){
int n;cin >> n;
for(int i=0;i<n;i++){
cin >> stu[i].name>> stu[i].y >> stu[i].m >> stu[i].d;
stu[i].id=i;
}
sort(stu,stu+n,cmp);
for(int i=0;i<n;i++){
cout << stu[i].name << endl;
}
return 0;
}
#include<iostream>
#include<queue>
using namespace std;
struct Node {
string name; //名字
int in; //输入顺序
int y, m, d; //年月日
};
struct cmp {
bool operator()(Node a, Node b){
if (a.y == b.y) {
if (a.m == b.m) {
if (a.d == b.d)
return a.in < b.in;
return a.d > b.d;
}
return a.m > b.m;
}
return a.y > b.y;
}//比较规则,这里自己好好思考一下,年小排在前,相等看月,再相等看日,再相同看输入顺序
};
int main() {
int n; Node a;
cin >> n;
priority_queue<Node, vector<Node>, cmp> q;
for (int i = 1; i <= n; ++i)
cin >> a.name >> a.y >> a.m >> a.d, a.in = i, q.push(a);
for (int i = 0; i < n; ++i)
cout << q.top().name << endl, q.pop();
return 0;
}
洛谷刷题整理(python)-2022.01.29
洛谷、牛客网、AcWing 刷题(python版)
Python 刷题常用语法与数据结构汇总-2022.01.30
python小游戏之一
python小游戏之二
python小游戏之三
python游戏入门书籍推荐