Hash的应用
问题描述
读入N名学生的成绩,将获得某一给定分数的学生人数输出
输入
测试输入包含若干测试用例,每个测试用例格式为:
第一行:N
第二行:N名学生的成绩(空格隔开)
第三行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩为0-100之间的数
输出
对每个测试用例,将获得给定分数的学生人数输出
样例输入
3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0
样例输出
1
0
2
代码
#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
//一定要先初始化二维数组,否则第一组数据错误
int Hash[1000][101]={0};
int j=0,query[10];
while(scanf("%d",&n)!=EOF&&n!=0){
Hash[j][101]={0};
for(int i=0;i<n;i++){
int x;
scanf("%d",&x);
if(x<=100&&x>=0) Hash[j][x]++;//核心
else printf("error mark!");
}
scanf("%d",&query[j]);
j++;
}
printf("\n");
//按查询,依次输出每组的众数
for(int k=0;k<j;k++){
printf("%d\n",Hash[k][query[k]]);
}
return 0;
}
可见,同样的方法还可以统计一组数据中的众数