CCF真题之出现次数最多的数

201312-1

问题描述
  给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
  输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。   输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
  输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6 10 1 10 20 30 20
样例输出
10

#include <iostream>
#include <algorithm>
using namespace std;
struct total
{
 int data;
 int num;
}c[1001];
int main()
{
 int n,i,min,max,a[1001],b[10001]={0};
 int k;
 bool cmp(total a,total b);
 cin>>n;
 for(i=0;i<n;i++)
 {
  cin>>a[i];
  b[a[i]]++;
 }
    sort(a,a+n);
    min=a[0];
    max=a[n-1];
    k=0;
    for(i=min;i<=max;i++)
    {
      if(b[i]!=0)
      {
       c[k].data=i;
       c[k].num=b[i];
       k++;
      }
    }
    sort(c,c+k,cmp);
    cout<<c[0].data<<endl;
    return 0; 
 
}
bool cmp(total a,total b)
{
 if(a.num>b.num) return true;
 else if(a.num==b.num)
   {
   if(a.data<b.data) return true;
   else
   return false;
   }
   else
 return false;
}

原文地址:https://www.cnblogs.com/lchzls/p/5034328.html