天天看點

衆數問題 NOJ 1207

衆數問題

時間限制(普通/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>      

題目來源

算法設計與實驗題解