天天看點

【9203】衆數

Time Limit: 10 second

Memory Limit: 2 MB

問題描述

由檔案給出N個1到30000間無序正整數,其中1<=N<=10000,同一個正整數 可能會出現多次,出現次數最多的整數稱為衆數。

[程式設計任務]:求出該檔案中的衆數M及它出現的次數num。

Input

兩行,第一行為正整數的個數N,第二行為n個正整數。

Output

有若幹行,每行兩個數,第一個是衆數,第二個衆數出現的次數。(s輸出按從小到大一次輸出每行)

Sample Input

12
2 4 2 3 2 5 3 7 2 3 4 3

      

Sample Output

2 4
3 4

      

【題解】

計數排序,在計數排序的時候不斷更新最大值 就好。最後在for 1 到30000 如果數字出現的次數等于最大值就輸出。

【代碼】

#include <cstdio>

const int MAXN = 30000;

int n,bo[MAXN+10],maxnumber = 0,tmax;

void input_data() {
	for (int i = 1; i <= MAXN; i++)	bo[i] = 0; //先初始化一下 
	scanf("%d",&n); 
	for (int i = 1; i <= n; i++) {
		int temp;
		scanf("%d",&temp); //輸入一個數字後就直接遞增數目 
		bo[temp]++;
		if (bo[temp] >= maxnumber) {
			maxnumber = bo[temp];
			tmax = temp;
		}
	}
}

void output_data() {
	for (int i = 1; i <= MAXN; i++)
		if (bo[i] == maxnumber) //如果等于出現的最多次數就輸出。 
			printf("%d %d\n",i,maxnumber);
}

int main() 
{
	input_data();
	output_data();
	return 0;
}
      
上一篇: 求衆數
下一篇: 尋找衆數