zoukankan      html  css  js  c++  java
  • 题目1014:排名(结构体排序)

    问题来源

      http://ac.jobdu.com/problem.php?pid=1014

    问题描述

      每次先输入考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;接着是第1题至第M题的正整数分值;之后是每名考生的准考证号(长度不超过20的字符串)、题目总数m、以及这m道题的题号(题目号由1到M)。

    问题分析

      直接进行处理,计算出每个学生的总分数,超过分数线就加入到结构体数组中,最后对数组sort一下,输出即可。

      注意自定义的cmp比较函数写法:返回true就是前者排在前。

    参考代码

    //
    // Created by AlvinZH on 2017/5/24.
    // Copyright (c) AlvinZH. All rights reserved.
    //
    
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    
    typedef struct Stu{
        char id[25];
        int Mark;
    };
    
    Stu S[1005];
    
    bool cmp(const Stu &a,const Stu &b)
    {
        if(a.Mark!=b.Mark)
            return a.Mark>b.Mark;
        else
            return strcmp(a.id,b.id)<0;
    }
    
    int main()
    {
        int N,M,G;
        int Grade[11];
        int Count;
        while(~scanf("%d",&N)&&N!=0)
        {
            Count=0;
            scanf("%d %d",&M,&G);
            for(int i=1;i<=M;i++)
                scanf("%d",&Grade[i]);
    
            char Sid[25];
            int m;
            int Qid;
            int SumG;
            for(int i=1;i<=N;i++)
            {
                SumG=0;
                scanf("%s %d",&Sid,&m);
                for(int j=1;j<=m;j++)
                {
                    scanf("%d",&Qid);
                    SumG+=Grade[Qid];
                }
    
                if(SumG>=G)
                {
                    strcpy(S[Count].id,Sid);
                    S[Count].Mark=SumG;
                    Count++;
                }
            }
            sort(S,S+Count,cmp);
            printf("%d
    ",Count);
            for(int i=0;i<Count;i++)
                printf("%s %d
    ",S[i].id,S[i].Mark);
        }
    }

    作者: AlvinZH

    出处: http://www.cnblogs.com/AlvinZH/

    本人Github:https://github.com/Pacsiy/JobDu

    本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    js 脚本学习 索引
    nodejs 学习索引
    oracle 学习 笔记
    githut 的 管理 使用
    sublime text 插件记录
    web 学习 相关索引
    wpf 自定义 无边框 窗体 resize 实现
    vs 效率工具
    ANDROID开发实用小工具
    iOS开发之Core Animation
  • 原文地址:https://www.cnblogs.com/AlvinZH/p/6899577.html
Copyright © 2011-2022 走看看