众数问题

众数问题

时间: 2ms        内存:64M

描述:

给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的由n 个自然数组成的多重集S,计算S的众数及其重数。

输入:

输入数据的第1行是多重集S中元素个数n(n<1300000);接下来的n行中,每行有一个最多含有5位数字的自然数,。

输出:

输出数据的第1行给出众数,第2行是重数。

示例输入:

6
1
2
2
2
3
5

示例输出:

2
3

提示:

参考答案(内存最优[1352]):

#include <stdio.h>
#define MAX 100000
int s[MAX];
int main()
{
	int n;
	int t;
	int i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&t);
		s[t]++;
	}
	int max=s[0];
	int count=0;
	for(i=1;i<MAX;i++)
	{
		if(s[i]>max)
		{
			max=s[i];
			count=i;
		}
	}
	printf("%d\n",count);
	printf("%d\n",max);
	return 0;
}

参考答案(时间最优[180]):

#include <stdio.h>
static   int a[100000];
int main()
{
    int i,n,k,max=0,m=0;


    scanf("%d\n",&n);
    for(i=0;i<n;i++)
     {
       scanf("%d",&k);
        a[k]++;
      }

for(i=0;i<100000;i++)
     {
       if(a[i]>max)
          {
           max=a[i];      
           m=i;          
          }
     }

    printf("%d\n",m);
    printf("%d\n",max);

return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注