本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。
输入格式:
输入在第 1 行给出不超过 105 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。
输出格式:
在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。
输入样例:
10
60 75 90 55 75 99 82 90 75 50
3 75 90 88
输出样例:
3 2 0
思路:主要考察桶的思想,当然用map也是可以的......
1 //解法一
2 #include<stdio.h>
3 #include<math.h>
4 int main()
5 {
6 int N,n,grade;
7 int num[10000]={0};
8 scanf("%d",&N);
9 for(int i=0;i<N;i++)
10 {
11 scanf("%d",&grade);
12 num[grade]++;
13 }
14 scanf("%d",&n);
15 for(int i=0;i<n;i++)
16 {
17 scanf("%d",&grade);
18 if(i==n-1)
19 printf("%d",num[grade]);
20 else
21 printf("%d ",num[grade]);
22 }
23 return 0;
24 }
1 //解法二
2 #include<iostream>
3 #include<map>
4 using namespace std;
5 int main()
6 {
7 int N;
8 scanf("%d",&N);
9 map<int,int>book;
10 int temp;
11 for(int i=0;i<N;i++)
12 {
13 scanf("%d",&temp);
14 book[temp]++;
15 }
16 int k;
17 scanf("%d",&k);
18 for(int i=0;i<k;i++)
19 {
20 scanf("%d",&temp);
21 printf("%d%c",book[temp],i==k-1?'
':' ');
22 }
23 return 0;
24 }