PAT甲级(Advanced Level) Practice 1028 List Sorting

原题

1028 List Sorting - PAT (Advanced Level) Practice

题目大意

输入n个学生的id、姓名、分数,再输入C表示对C列进行排序。

id:从小到大排

姓名:姓名不同时从小到大排,相同时id从小到大排

分数:不同时从小到大排,相同时id从小到大排

解题思路

调用自带的sort函数,自定义比较函数

代码(c++)
cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

const int N = 100010;

struct stu {
    string id, name;
    int score;
}stus[N];

bool cmp1(const stu &a, const stu &b) {              // 比较id
    return a.id < b.id;
}

bool cmp2(const stu &a, const stu &b) {              // 比较姓名
    if (a.name != b.name) return a.name < b.name;
    return a.id < b.id;
}

bool cmp3(const stu &a, const stu &b) {              // 比较分数
    if (a.score != b.score) return a.score < b.score;
    return a.id < b.id;
}

int main() {
    int n, cmp;
    cin >> n >> cmp;
    for (int i = 0; i < n; i++)
        cin >> stus[i].id >> stus[i].name >> stus[i].score;
    switch (cmp) {
        case 1:
            sort(stus, stus + n, cmp1);
            break;
        case 2:
            sort(stus, stus + n, cmp2);
            break;
        case 3:
            sort(stus, stus + n, cmp3);
            break;
        default:
            return 0;
    }
    for (int i = 0; i < n; i++)
        cout << stus[i].id << " " << stus[i].name << " " << stus[i].score << endl;

    return 0;
}
相关推荐
@MMiL9 小时前
ST-link与J-link通俗易懂讲解
算法
RAOY的AI笔记9 小时前
GPT-6打破孪生素数猜想最新纪录:AI正在进入数学研究新时代?
人工智能·gpt·算法
Nil2089 小时前
leetcode 994腐烂的橘子
算法·leetcode·职场和发展
闻缺陷则喜何志丹9 小时前
【动态规划】P10726 [GESP202406 八级] 空间跳跃|普及+
c++·算法·动态规划·洛谷
地平线智能驾驶开发者9 小时前
模型量化入门:从浮点模型到低比特表示
算法·量化·算法工具链
地平线开发者10 小时前
模型量化入门:从浮点模型到低比特表示
算法
枫叶林FYL10 小时前
【群体智能集群控制工程实践】第10章 无人舰队核心功能实现
大数据·人工智能·算法
不会就选b10 小时前
【无标题】
算法
m0_7393128710 小时前
【自动驾驶和机器人控制】万向锁(Gimbal Lock)原理详解 + 和欧拉角 / 四元数 / SO(3)对比
算法·机器人·自动驾驶
Felven11 小时前
A. Eating Game
算法