接待顺序 题解
2026-08-20 14:19:33
发布于:浙江
0阅读
0回复
0点赞
接待顺序 题解
题意讲解:
输入个人的姓名,年龄,挂号顺序,根据以下规则排序:
年龄>60岁的人优先级高于年龄≤60的人,如果两人所处年龄区间相同则按挂号顺序小在前处理
思路讲解:
这道题不同于其他的结构体排序的点在于它并不是纯按照年龄,而是按照年龄是否>60的优先级排序的,所以要在结构体内专门设置一个是否>60岁的优先级变量,最后在按照优先级和挂号顺序排序即可
代码讲解:
#include <bits/stdc++.h>
using namespace std;
struct node {
string name;
int age, id;
bool is_old; // 是否有优先级
}a[201];
bool rcmp(const node x, const node y) {
if (x.is_old != y.is_old)return x.is_old > y.is_old; // 优先级更大的先
return x.id < y.id; // 如果优先级相同则按挂号顺序排序
}
int n;
signed main() {
cin >> n;
for (int i = 1;i <= n;i++){
cin >> a[i].name >> a[i].age >> a[i].id;
if (a[i].age > 60)a[i].is_old = true; // 是否有优先级
else a[i].is_old = false;
}
sort (a + 1, a + n + 1, rcmp);
for (int i = 1;i <= n;i++) {
cout << a[i].name << endl;
}
return 0;
}
这里空空如也








有帮助,赞一个