阅读程序 · 答案 3 · 考点:输入输出、位运算、循环结构、字符串(string)、STL容器基础
← 整套速查表 NOIP 普及组初赛 全部真题阅读程序写结果
#include<iostream>
#include<cstring>
using namespace std;
const int SIZE = 100;
int main()
{
int n,i,sum,x,a[SIZE];
cin>>n;
memset(a,0,sizeof(a));
for(i=1;i<=n;i++){
cin>>x;
a[x]++;
}
i=0;
sum=0;
while(sum<(n/2+1)){
i++;
sum+=a[i];
}
cout<<i<<endl;
return 0;
}输入: 11 4 5 6 6 4 3 3 2 3 2 1
看到‘累加频次直到超过n/2+1’→先想数组统计与循环终止条件
阈值n/2+1随n动态变化,勿硬编码;memset需用sizeof(a)全清零;i初值为0,循环内先++再访问a[i]。
考点:数组频次统计|循环控制
输入n个数,统计每个数出现的频次存入数组a,然后从下标1开始累加频次,直到累计总数超过n/2+1,输出此时的下标。