题目链接
https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040
题解一
这份代码最后一个点会超时
// PAT BasicLevel 1038
// https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// n个学生及其分数
int n;
cin >> n;
int *scores = new int[n];
for(int i=0;i<n;++i){
cin >> scores[i];
}
// k个查询的分数
int k,search;
cin >> k;
while(k--){
cin >> search;
cout << count(scores, scores + n, search);
if(k)
cout << ' ';
}
// 释放内存
delete[] scores;
//system("pause");
return 0;
}
题解二
这个所有点都过了。用数组存储各分数学生数量,下标是分数,数组元素值是数量。
// PAT BasicLevel 1038
// https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// n个学生
int n,score;
cin >> n;
// 各分数人数
int count[101];
fill(count,count+101,0);
// 各分数的学生数量统计
while(n--){
cin >> score;
count[score]++;
}
// k个查询的分数
int k,search;
cin >> k;
while(k--){
cin >> search;
cout << count[search];
if(k)
cout << ' ';
}
//system("pause");
return 0;
}
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!