您的位置:首页 > 其它

BestCoder Round #20 A

2014-11-29 21:42 281 查看
题目大意:N个人进行投票,找出获得票数最多的人,若两人票数相同输出序号小的那个。

算法思想:

主要用到一个结构体,有两个属性,一个记录所获的票数,一个记录编号,然后对结构提数组拍个序,找出获得票数最多的且其序号是获得相同票数人中最小的序号。

代码如下:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef struct{
int num;
int index;
}Get;
Get g[105];
bool cmp(Get a,Get b){
if(a.num>b.num)
return true;
else if(a.num==b.num)
if(a.index>b.index) return true;
return false;
}
int main(){
int T,N,a;
cin>>T;
while(T--){
cin>>N;
for(int i=1;i<=N;i++){
g[i].num=0;
g[i].index=i;
}
for(int i=1;i<=N;i++){
cin>>a;
g[a].num++;
}
sort(g+1,g+N+1,cmp);
cout<<g[1].index<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: