• PAT甲级1028List Sorting


    题目介绍

    • 题目链接

      https://pintia.cn/problem-sets/994805342720868352/problems/994805468327690240

    • 题目考点

      结构体排序,就超简单……

    • 题目难度

      PAT甲级25分

    • 题目大意

      Excel可以按照某一列进行排序,要求实现这个函数。

    • 输入

      • N:整数,不超过100000,记录的数量
      • C:整数,按照C这1列进行排序
      • N个学生:每行包括学生ID(6位数字),名字(不包含空格、不超过8个字符的字符串),分数(范围[0,100])
    • 输出

      输出N个学生。如果C=1则按照ID升序排列;如果C=2则按照名字非降序排列;如果C=3则按照分数非降序。如果名字或分数重复就按ID增序排列。

    题解

    解题思路

    • 啊这(问号脸,这么简单?),学生放在vector里,写个结构体排序函数(把C定义成全局变量,在排序函数里根据C选取排序规则),调用STL里的sort就好了。

    代码

    // Problem: PAT Advanced 1028
    // URL: https://pintia.cn/problem-sets/994805342720868352/problems/994805468327690240
    // Tags: 
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int c;
    
    struct Student{
        string id, name;
        int grade;
    };
    
    bool studentCmp(Student& s1, Student& s2){
        if (c==1){
            return s1.id < s2.id;
        }
        else if(c==2){
            return s1.name==s2.name? s1.id < s2.id : s1.name < s2.name;
        }
        return s1.grade==s2.grade? s1.id < s2.id : s1.grade < s2.grade;
    }
    
    int main()
    {
        int n;
        scanf("%d%d", &n, &c);
        vector<Student> students(n);
        for(int i=0; i<n; i++)
            cin >> students[i].id >> students[i].name >> students[i].grade;
        sort(students.begin(), students.end(), studentCmp);
        for (auto it=students.begin(); it!=students.end(); it++){
            printf("%s %s %d
    ", it->id.c_str(), it->name.c_str(), it->grade);
        }
        return 0;
    }
    

    Github(github.com):@chouxianyu

    Github Pages(github.io):@臭咸鱼

    知乎(zhihu.com):@臭咸鱼

    博客园(cnblogs.com):@臭咸鱼

    B站(bilibili.com):@绝版臭咸鱼

    微信公众号:@臭咸鱼

    转载请注明出处,欢迎讨论和交流!


  • 相关阅读:
    重塑矩阵
    数组拆分
    最大连续1的个数
    石子游戏
    概率与期望知识总结
    洛谷 P3951 NOIP 2017 小凯的疑惑
    关于结构体的初始化
    山海经:线段树维护最大子段和
    偏序 分块+bitset
    分块练习C. interval
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/14377867.html
Copyright © 2020-2023  润新知