题目大意: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;
}