问题 G: 22-数组-2-众数问题
题目描述
问题描述:
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,其中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5},则S的众数是2,其重数为3。
编程任务:
对于给定的由n 个正整数组成的多重集合S,编程计算S 的众数及其重数。
输入
单样例。第1行输入集合S中元素个数n(1≤n≤50000);接下来的n 行中,每行输入一个正整数x(0≤x≤105)。
输出
输出结果包括2行,第1行给出众数,第2行是该众数的重数。(如果有多个众数,只输出最小的那个)
样例输入 Copy
6 1 2 2 2 3 5
样例输出 Copy
2 3
1、devc++调试模式下,查看数组中变量的值
使用Dev-C++查看数组中的变量值而不是数组地址_咕咕酱没有悲伤的博客-CSDN博客_devc++调试怎么看数组
2、if语句的格式写好
if()
{
;
}
else if()
{
;
}
坚决杜绝:
if()
{
;
}
if()
{
;
}
3、如何将数组初始化为同一值?(对数组所有元素进行赋相同值)(C/C++实现)_Kk_1025的博客-CSDN博客_c++数组初始化为同一个值
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n=0;
while(scanf("%d",&n)!=EOF)
{
int a[50000]={0};
int b[50000];
int *p=b;
for(int i=0;i<5;i++)
{
*p=1;
p++;
}
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
for(int j=0;j<i;j++)
{
if(a[i]==a[j])
{
b[j]++;
break;
}
}
}
for(int k=1;k<n;k++)
{
if(b[k]<b[k-1])
{
b[k]=b[k-1];
a[k]=a[k-1];;
}
else if(b[k]==b[k-1])
{
if(a[k]>a[k-1])
{
a[k]=a[k-1];
}
else if(a[k]<a[k-1])
{
;
}
}
}
printf("%d\n%d\n",a[n-1],b[n-1]);
}
return 0;
}