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