好久没更新了……
题目来自: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;// 输出 } } }