您的位置:首页 > 编程语言 > C语言/C++

CCF 201312-1 出现次数最多的数 C语言解法

2017-12-03 00:06 369 查看
问题描述

试题编号: 201312-1

试题名称: 出现次数最多的数

时间限制: 1.0s

内存限制: 256.0MB

问题描述:

问题描述   给定 n 个正整数,找出它们中出现次数最多的数。如果这样的数有多 个,请输出其中最小的一个。

输入格式   输入的第一行只有一个正整数 n(1 ≤ n ≤ 1000),表示数字的个数。

   输入的第二行有 n 个整数 s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式   输出这 n 个次数中出现次数最多的数。如果这样的数有多个,输出其 中最小的一个。

样例输入

6

10 1 10 20 30 20

样例输出

10

C语言解法如下

#include<stdio.h>
void SortArray(int a[],int n)
{
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
k=j;
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
void FindMax(int b[],int *e,int n)
{
int i;
int max;
max=b[0];
*e=0;
for(i=1;i<n;i++)
{
if(max<b[i])
{
max=b[i];
*e=i;
}
}
}
int main()
{
int a[1000],n,i,j,b[1000],c[1000],e;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
SortArray(a,n);
for(i=0;i<n;i++)
b[i]=1;
for(i=0,j=0;i<n;i++)
{
c[j]=a[i];
if((a[i]!=a[i+1])&&(i!=n-1))
j++;
else if(i!=(n-1))
b[j]=b[j]+1;
}
FindMax(b,&e,n);
printf("%d",c[e]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息