1. 程式人生 > >演算法訓練 出現次數最多的整數

演算法訓練 出現次數最多的整數

 問題描述   編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。   輸入格式:第一行是一個整數NN £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。   輸出格式:輸出只有一行,即出現次數最多的那個元素值。輸入輸出樣例

樣例輸入

5 100 150 150 200 250

樣例輸出

150

//有一種情況是n為0或-1    答案為空...........

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <map>
using namespace std;


int main(void)
{

    map<int, int> a;

    int n, t, max = 0, MAX;

    cin >> n;

    if(n <= 0)
        return 0;
    
    while(n--)
    {
        cin >> t;
        a[t]++;
    }
    for(map<int, int>::iterator iter = a.begin(); iter != a.end(); iter++)
    {
        if(max < iter -> second)
        {
            max = iter -> second;
            MAX = iter -> first;
        }

    }

    cout << MAX << endl;
    return 0;
}