题目描述
给出N个1到 30000 间无序数正整数,其中 1≤N≤10000,同一个正整数可能会出现多次,出 现次数最多的整数称为众数。求出它的众数及它出现的次数。如果有多个出现次数相同的数,按数值从小到大依次输出。
输入
第一行是正整数的个数 N
第二行开始为 N 个正整数。
输出
输出若干行,每行两个数,第 1 个是众数,第 2 个是众数出现的次数。两个数之间用两个空格隔开
样例输入
12 2 4 2 3 2 5 3 7 2 3 4 3
样例输出
2 4 3 4
这题的思路:输入一个数,直接定义一个数组累加。
#include <stdio.h>
int b[30010];
int main(){
int n,max=0,a;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a);
b[a]++;
}
for(int i=0;i<=30000;i++){
if(max<b[i]){
max=b[i];
}
}
for(int i=0;i<=30000;i++){
if(b[i]==max){
printf("%d %d\n",i,b[i]);
}
}
}
本文介绍了一个简单的算法,用于从大量正整数中找出众数及其出现次数。输入一系列1到30000之间的正整数,算法通过数组累加的方式统计每个数出现的频次,并输出出现次数最多的数及其频次。
383

被折叠的 条评论
为什么被折叠?



