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