编号统计
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
- zyc最近比较无聊,于是他想去做一次无聊的统计一下。他把全校同学的地址都统计了一下(zyc都将地址转化成了编码),然后他希望知道那个地方的同学最多(如果同学最多的地方有多个,输出编号最小的一个)。
- 输入
- 第一行输入一个正整数T(0<T<=11)表示有T组测试数据
每组测试数据第一行输入一个正整数N(0<N<200000)表示有N个编号,随后输入N个编码(编码由数字组成且少于十位) - 输出
- 每组数据输出占一行输出出现次数最多的编号
- 样例输入
-
1 5 12345 456 45 78 78
- 样例输出
-
78
-
我的: -
#include<iostream>
#include<algorithm>using namespace std;
int c[200000];
int main()
{
int t,n,i,k,m,l,little;
cin>>t;
while(t--)
{
cin>>n;
k=1;
m=1;
for(i=0; i<n; i++)
cin>>c[i];
sort(c,c+n);
little=c[0];
for(i=1; i<n; i++)
{
if(c[i]==c[i-1])
{
k++;
l=c[i];
}
else
{
if(m<k)
{
m=k;
little=l;
}
k=1;
}
}
cout<<little<<endl;
}
return 0;
} -
高手的:
02.#include<iostream> 03.#include<map> //容器技术04.#include<cstdio> 05.using namespace std; 06.int main() 07.{ 08. 09. int t;cin>>t; 10. while(t--){ 11. map<int,int> m; 12. int n,v;cin>>n; 13. for(int i=0;i<n;i++){ 14. scanf("%d",&v); 15. m[v]++; 16. } 17. int c=0; 18. map<int,int>::iterator it0=m.begin(); 19. for(map<int,int>::iterator it=m.begin();it!=m.end();it++) 20. if(c<it->second)c=it->second,it0=it; 21. cout<<it0->first<<endl; 22. } 23. 24.}