衆數問題
時間限制:3000 ms | 記憶體限制:65535 KB
難度:3
- 描寫叙述
-
- 輸入
-
第一行為n,表示測試資料組數。(n<30)
每組測試的第一行是一個整數m,表示多重集S中元素的個數為m
接下來的一行中給出m(m<100)個不大于10萬的自然數
(不會出現不同元素出現的次數同樣的情況。如:S={11,11,22,22,33,33})。
- 輸出
- 每組測試資料輸出一行。包括兩個數。第一個是衆數。第二個是其重數,中間以空格隔開。
- 例子輸入
-
1 6 1 2 2 2 3 5
- 例子輸出
-
2 3
-
#include<cstdio> #include<cstring> int main() { int n,m,i,num[100005],a[105],mark,t; scanf("%d",&n); while(n--) { memset(num,0,sizeof(num)); scanf("%d",&m); for(i=0,t=0; i<m; i++) { scanf("%d",&a[i]); num[a[i]]++; // num[a[i]] 記錄 a[i] 的數量 if(num[a[i]]>t) // mark 記錄衆數,t 記錄衆數數量 { t = num[a[i]]; mark = a[i]; } } printf("%d %d\n",mark,t); } }