好久没更新了……
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1615
题目描述
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 <iostream>
#include <cstring>
using namespace std;
int main(){
int n,k,max = -1;
cin >> n;
int a[30001]; // 桶
memset(a,0,sizeof(a));
for (int i = 1;i <= n;i++){
cin >> k;
a[k]++;
if (a[k] > max){
max = a[k]; // 最大的数
}
}
for (int i = 0;i <= 30001;i++){
if (a[i] == max){
cout << i << " " << a[i] << endl;// 输出
}
}
}
