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

来源:互联网 发布:广西干部网络培训平台 编辑:程序博客网 时间:2024/06/14 15:04

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

原创粉丝点击