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;
}
相关推荐
wzdark3 分钟前
矩阵快速幂算法在图路径计算中的应用4
线性代数·算法·矩阵
Dylan的码园6 分钟前
A+B问题 进制处理【逻辑控制 运算符】
c++·算法
空奈qwq16 分钟前
ANN 全连接神经网络入门指南:从神经元到深度学习的第一步
人工智能·python·深度学习·神经网络·算法·机器学习
hetao173383733 分钟前
2026-09-27~28 hetao1733837 的刷题记录
c++·算法
Godspeed Zhao40 分钟前
现代智能雷达技术15——算法(1)
人工智能·算法·雷达
代码什么用43 分钟前
LeetCode-42. 接雨水
算法·leetcode
lengxuenong1 小时前
枚举及其优化学习手册
c++·学习·算法·青少年编程
小O的算法实验室1 小时前
IEEE TAI,RoCo:基于角色的LLM协作实现自动启发式设计
算法
小范的技术工坊1 小时前
大模型蒸馏
人工智能·算法·数据挖掘·大模型
Benny_Tang1 小时前
P9527 [JOIST 2022] 洒水器 / Sprinkler 题解
c++·算法