zoukankan      html  css  js  c++  java
  • 1028 List Sorting 排序

    1028 List Sorting (25 分)

    Excel can sort records according to any column. Now you are supposed to imitate this function.

    Input Specification:

    Each input file contains one test case. For each case, the first line contains two integers N (105​​) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

    Output Specification:

    For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

    Sample Input 1:

    3 1
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    

    Sample Output 1:

    000001 Zoe 60
    000007 James 85
    000010 Amy 90
    

    Sample Input 2:

    4 2
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 98
    

    Sample Output 2:

    000010 Amy 90
    000002 James 98
    000007 James 85
    000001 Zoe 60
    

    Sample Input 3:

    4 3
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 90
    

    Sample Output 3:

    000001 Zoe 60
    000007 James 85
    000002 James 90
    000010 Amy 90

    思路:
      这个题与其说是考察排序,不如说是考察char数组和string之间的转换,如果使用cin输入会超时
    #include<iostream>
    #include<vector>
    #include<string>
    #include<algorithm>
    #include<stdlib.h>
    using namespace std;
    
    struct Student
    {
        string id;
        string name;
        int score;
    };
    
    bool cmp1(Student&A,Student&B)
    {
        return A.id<B.id;
    }
    
    bool cmp2(Student&A,Student&B)
    {
        return A.name==B.name?A.id<B.id:A.name<B.name;
    }
    
    bool cmp3(Student&A,Student&B)
    {
        return A.score==B.score?A.id<B.id:A.score<B.score;
    }
    
    
    int main()
    {
        int n,c;
        cin>>n>>c;
        Student stu[n];
        for(int i=0; i<n; i++)
        {
            char id[10],name[20];
            scanf("%s%s%d",id,name,&stu[i].score);
            stu[i].id=string(id);
            stu[i].name=string(name);
    
        }
        if(c==1)
        {
            //qsort(stu,n,sizeof(Student),cmp1);
            sort(stu,stu+n,cmp1);
        }
        else if(c==2)
        {
            sort(stu,stu+n,cmp2);
        }
        else
            sort(stu,stu+n,cmp3);
        for(int i=0; i<n; i++)
        {
            printf("%s %s %d
    ",stu[i].id.c_str(),stu[i].name.c_str(),stu[i].score);
            //cout<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].score<<endl;
    
        }
        return 0;
    }
     
  • 相关阅读:
    北斗授时服务器,时间同步服务器,网络时钟服务器2020最新报价
    北斗GPS卫星同步时钟让采集系统更精准
    ntp时钟服务器(医院时钟系统)在网络里的作用
    「Excel技巧」Excel中根据某列的值去汇总另外一列的值
    「Excel技巧」Excel技巧之如何看文件里的宏?
    「杂谈」同学聚会最悲哀的事情
    torch 中的损失函数
    CJJ/T 302-2019 城市园林绿化监督管理信息系统工程技术标准
    SJ/T 11362-2006 企业信息化技术规范 制造执行系统(MES)规范
    1. C语言三个数从小到大排序/输出
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/10295908.html
Copyright © 2011-2022 走看看