1083 List Grades (25分)[排序]

By Jalan

知识工具需求

数学

数据结构和算法

语言

题干

给N个学生记录,Id和分数,按照分数非递增排序.输出成绩在给定区间的学生

输入条件

格式:
N
name[1] ID[1] grade[1]
name[2] ID[2] grade[2]
… …
name[N] ID[N] grade[N]
grade1 grade2
name和id不超过10位,grade在[0,100]
grade1 grade2范围边界.保证成绩都不一样.

输出条件

输出在[grade1, grade2]范围内的非递增排序的name和id,没有打印NONE

例子

例1

输入
4
Tom CS000001 59
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
60 100
输出
Mike CS991301
Mary EE990830
Joe Math990112

题解

第一次

思路

  1. 结构体包含成绩 id和name,建立大小是N的结构体数组List,输入保存
  2. 创建结果数组result遍历数组,范围在内的加入result
  3. result空则输出,不空排序result输出.

预期时间复杂度

nlogn

编写用时

9分钟

代码

CPP
#include <algorithm>
#include <stdio.h>
#include <vector>
using namespace std;
struct node
{
    int g;
    char name[11], id[11];
};
int cmp(node a, node b)
{
    if (a.g > b.g)
    {
        return 1;
    }
    return 0;
}
int main(int argc, char const *argv[])
{
    //1
    int N;
    scanf("%d", &N);
    vector<node> list(N);
    for (int i = 0; i < N; i++)
    {
        scanf("%s %s %d", list[i].name, list[i].id, &list[i].g);
    }
    int g1, g2;
    scanf("%d%d", &g1, &g2);
    //2
    vector<node> result;
    for (int i = 0; i < N; i++)
    {
        if (list[i].g >= g1 && list[i].g <= g2)
        {
            result.push_back(list[i]);
        }
    }
    //3
    if (result.size() == 0)
    {
        printf("NONE");
    }
    else
    {
        sort(result.begin(), result.end(), cmp);
        for (int i = 0; i < result.size(); i++)
        {
            printf("%s %s\n", result[i].name, result[i].id);
        }
    }

    return 0;
}
运行用时

在这里插入图片描述

结尾

看在我写了这么多注释的份上可以给我点个赞嘛,求求惹=]砰砰砰,给我加点写下去的油呀@.@
也欢迎关注我的CSDN账号呀,接下来两个月我应该会按这个格式更新所有的PTA甲级题目

                                        **开心code每一天**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值