7-7 求解众数问题
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的由n 个自然数组成的多重集S,计算S的众数及其重数。如果出现多个众数,请输出最小的那个。
输入格式:
输入数据的第1行是多重集S中元素个数n(n<1000);第二行输入n个最多含有5位数字的自然数。
14
1 2 2 2 3 3 5 6 6 5 6 2 7 6
输出格式:
输出数据的第1行给出众数,第2行是重数。
2 4
代码:
#include <stdio.h>
#include <stdlib.h>
int n;
int a[10100];
int temp[10100];
int min=9999;
int mintime=0;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
int x=a[i];
temp[x]++;
if(temp[x]>mintime)
{
mintime=temp[x];
min=x;
}
else if(temp[x]==mintime&&x<min)
min=x;
}
printf("%d %d",min,mintime);
return 0;
}
202206222116三