好久沒更新了……
題目來自: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;// 輸出
}
}
}
