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

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

樣例輸入

5
100
150
150
200
250

樣例輸出

150

 

思路:水題,熟練了一下map的用法,好多東西都遺忘了,太可怕了!繼續加油 你可以的,不要爲外界所影響。這個題有個坑,因爲n沒說具體數據範圍,所以如果n<1 或者n>20 不應該輸出。

代碼:

#include <iostream>
#include <map>
using namespace std;
#define inf 0x3f3f3f3f
int a[100];
map<int,int>mp;
map<int,int>::iterator iter;
int main()
{
    int n;
    int maxx=0;
    int ans1=0;
    cin>>n;
    if(n<1||n>20)   ///注意,當n小於1或者大於20時不輸出  陷阱......
        return 0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        mp[a[i]]++;
    }

    maxx=-1;
    for(iter=mp.begin();iter!=mp.end();iter++)
    {
        int ans=iter->second;
        if(ans>maxx)
        {
            maxx=ans;
            ans1=iter->first;
        }
    }
    cout<<ans1<<endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章