题目1018:统计同成绩学生人数(hash简单应用)

问题来源

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

问题描述

  给你n位同学的成绩,问获得某一成绩的学生有多少位。

问题分析

  初见此题,有人会想到先将所有成绩存入数组,查询某一分数时一一对比得到人数。但是这样效率太低。

  在这里我们发现,学生的分数是有一个严格的范围的,从0到100,而且还是整数,只有101种可能的分数。我们只要为这101种可能性分数一一计数,便可以砸输入查询分数时直接得知改分数的人数。这是hash的基本应用,效率很快。

参考代码

//
// Created by AlvinZH on 2017/5/3.
// Copyright (c) AlvinZH. All rights reserved.
//

#include <cstdio>
#include <cstring>

int main()
{
    int n,a;
    int hash[101];
    while(~scanf("%d",&n)&&n)
    {
        memset(hash,0,sizeof(hash));
        while(n--)
        {
            scanf("%d",&a);
            hash[a]++;
        }
        scanf("%d",&a);
        printf("%d
",hash[a]);
    }
}

作者: AlvinZH

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

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

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

原文地址:https://www.cnblogs.com/AlvinZH/p/6802065.html