问题 E: 众数
时间限制: 1 Sec 内存限制: 32 MB
提交: 564 解决: 219
题目描述
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。
输入
测试数据有多组,每组输入20个1-10之间的数。
输出
对于每组输入,请输出1-10中的众数。
注意如果存在一样多次数的众数,则输出权值较小的那一个。
样例输入
8 9 6 4 6 3 10 4 7 4 2 9 1 6 5 6 2 2 3 8
样例输出
6
思路
用数组存储次数 再遍历寻找众数
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main(){
int a[11]={0},temp;
while(scanf("%d",&temp)!=EOF){
memset(a,0,sizeof(a));
a[temp]++;
for(int i=1;i<20;i++){
scanf("%d",&temp);
a[temp]++;
}
int max=a[1],j=1;
for(int i=1;i<=10;i++){
if(a[i]>max) {
j=i;max=a[i];
}
}
printf("%d\n",j);
}
return 0;
}