问题描述
试题编号: 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]); }