FZU 1582 众数问题

 

众数问题
Time Limit:1s Memory limit:32M
Accepted Submit:366 Total Submit:1515

给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。

例如,S={1,2,2,2,3,5}。

多重集S的众数是2,其重数为3。

数据输入

输入包括多组数据,请处理到EOF结束。

每组数据,以一个n(1<=n<=100,000)开始,接下n行,每行有一个数字(-231~231)。

数据输出

对于每组输入数据,输出一行一个数字,表示众数。如果存在多个解,只需输出值最小的众数即可。

样例输入

6
1
2
2
2
3
5
3
-1
-1
-1

样例输出

2
-1

Original: FOJ月赛-2008年4月

 

解题:

        不知道是不是因为用过map的关系,现在还只是会用map,不过真的比较好用。关键码与值的一一对应,很快的实现众数的递加。

#include <iostream> #include <map> using namespace std; int main() { int n,m,max=0; map <int,int> number; map <int,int>::iterator iter; while(cin>>n) { for (int i=0;i<n;i++) { cin>>m; iter=number.find(m); if (iter==number.end()) { number.insert(map <int,int>::value_type(m,1)); } else iter->second++; } for (iter=number.begin();iter!=number.end();iter++) { if (iter->second>max) { max=iter->second; m=iter->first; } } cout<<m<<endl; number.clear(); max=0; } return 0; }

你可能感兴趣的:(iterator,ini)