#include <iostream>
#include <stdlib.h>
using namespace std;
void func()
{
while(true)
{
int a[11]={0};
for(int i=0;i<20;i++)
{
int t;
if(cin>>t){
a[t]++;
}else
return;
}
int max;
int maxpos;
for(int i=10;i>=1;i--)
{
if(i==10){
max=a[i];
maxpos=i;
}else if(max<=a[i])
{
max=a[i];
maxpos=i;
}
}
cout<<maxpos<<endl;
}
}
int main(int argc, char *argv[])
{
//printf("Hello, world\n");
func();
return 0;
}
HASH保存数的出现次数,然后按数的逆序循环判断,如果有更大出现次数,则更新MAX,此时因为逆序,权值也更小
类似计数排序的过程
-
题目描述:
-
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。
-
输入:
-
测试数据有多组,每组输入20个1-10之间的数。
-
输出:
-
对于每组输入,请输出1-10中的众数。
-
样例输入:
-
5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2
-
样例输出:
-
5