#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while (cin >> n){
int x[n], max=0, num;
for (int i=0; i<n; i++){
cin >> x[i];
}
sort (x, x+n);//小到大輸出
for (int j=0; j<n; j++){
int a=count (x, x+n, x[j]);
if (a>max){
max = a;
num = x[j];
}
}//找出第一個眾數
cout << num << " " << max << '\n';
for (int k=0; k<n; k++){
int b=count (x, x+n, x[k]);
if (b==max && x[k]!=num){
cout << x[k] << " " << b << '\n';
x[k] = 0;// 避免重複輸出
}
}//找出其他和第一眾數同樣多的眾數
}
return 0;
}
#include
using namespace std;
int main()
{
int n;
while (cin >> n){
int x[n], max=0, num;
for (int i=0; i
cin >> x[i];
}
sort (x, x+n);//小到大輸出
for (int j=0; j
int a=count (x, x+n, x[j]);
if (a>max){
max = a;
num = x[j];
}
}//找出第一個眾數
cout << num << " " << max << '\n';
for (int k=0; k
int b=count (x, x+n, x[k]);
if (b==max && x[k]!=num){
cout << x[k] << " " << b << '\n';
x[k] = 0;// 避免重複輸出
}
}//找出其他和第一眾數同樣多的眾數
}return 0;
}
我記得這題用建表比較快,AC (2ms, 228KB)
int appear[30000]={0};
建一個陣列,每個數字出現,比如5,appear[5]+=1;
掃完同時記錄max出現次數,在掃一次印出appear[x]==max的即可
sort有時會太花費時間了~