问题来源
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和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。