PAT1038 統計同成績學生

TNTZS666發表於2019-01-19

題目描述:

本題要求讀入 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]);
	}

	}
}

相關文章