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;
}
相关推荐
地平线开发者5 分钟前
征程 6 | QAT 新版 qconfig 量化模板使用教程
算法·自动驾驶
多恩Stone16 分钟前
【ModelScope-1】数据集稀疏检出(Sparse Checkout)来下载指定目录
人工智能·python·算法·aigc
山峰哥34 分钟前
沉浸式翻译插件深度评测:打破语言壁垒的黑科技利器
数据结构·科技·算法·编辑器·办公
AI脚下的巨人1 小时前
机器人逆运动学:从SVD到IK算法
算法·机器人
ゞ 正在缓冲99%…2 小时前
2025.9.28华为软开
算法·华为
9ilk2 小时前
【C++】 --- 哈希
c++·后端·算法·哈希算法
再卷也是菜3 小时前
C++篇(21)图
数据结构·c++·算法
星轨初途3 小时前
C++入门(算法竞赛类)
c++·经验分享·笔记·算法
灰灰勇闯IT4 小时前
KMP算法在鸿蒙系统中的应用:从字符串匹配到高效系统级开发(附实战代码)
算法·华为·harmonyos
小龙报4 小时前
【算法通关指南:数据结构和算法篇 】队列相关算法题:3.海港
数据结构·c++·算法·贪心算法·创业创新·学习方法·visual studio