衆數問題
時間限制(普通/Java) : 1000 MS/ 3000 MS 運作記憶體限制 : 65536 KByte
總送出 : 526 測試通過 : 72
題目描述
給定含有n個元素的多重集合S,每個元素在S中出現的次數稱為該元素的重數。多重集S中重數最大的元素稱為衆數。例如,S={1,2,2,2,3,5}。多重集S的衆數是2,其重數為3。
對于給定的由n 個自然數組成的多重集S,程式設計計算S 的衆數及其重數
輸入
輸入的第1行多重集S中元素個數n;接下來的n 行中,每行有一個自然數。
輸出
輸出有2 行,第1行給出衆數,第2行是重數。
樣例輸入
6
1
2
3
5
樣例輸出
這題描述不清楚,不知道出現多個衆數應該如何輸出,是隻輸出最小的還是輸出最大的還是都輸出==
反正AC的程式是輸出最小衆數,僅一個的情況==
實作代碼:
<span style="font-size:12px;">#include<cstdio>
#include<cstring>
int n,m,maxi=-1,bb;
int a[100001];
int main(){
scanf("%d",&n);
memset(a,0,sizeof(a));
for(int i=0;i<n;i++){
scanf("%d",&m);
a[m]++;
if(maxi<a[m] ||(maxi==a[m]&&bb>m)){
maxi=a[m];
bb=m;
}
}
printf("%d\n%d\n",bb,maxi);
}</span>
題目來源
算法設計與實驗題解