PAT1038 统计同成绩学生

题目描述:

本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。

  • 输入格式
    输入在第 1 行给出不超过10^​5的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。

  • 输出格式
    在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。


解题思路:这道题看似很简单,但是最后一个测试点用常规做法肯定超时,需要想到将分数作为数组的下标,而对应存放的,是该分数出现的次数。这样一来,数组控制在101的大小,不管你来多少个数。并且,在查找的时候,用数组的下标进行查找就可以了。

易错点:这道题一开始用C++实现时用的cin和cout作为输入输出,结果最后一个测试用例还是超时,需要改为用scanf和printf作为本题的输入输出才行。


程序:

#include<iostream>
using namespace std;
int main(){
	int N,K;
	cin>>N;
	int a[101]={0};
	for (int i = 0; i < N; ++i)
	{
		int temp1=0;
		scanf("%d",&temp1);
		a[temp1]++;
	}
	cin>>K;
	for (int i = 0; i < K; ++i)
	{
		int temp2=0;
		scanf("%d",&temp2);
	if (i)
	{	
		
		printf(" %d",a[temp2]);
	}else{
		printf("%d",a[temp2]);
	}

	}
}

猜你喜欢

转载自blog.csdn.net/TNTZS666/article/details/86556367
今日推荐