CCF 201312-1 出現次數最多的數||map的應用
來自專欄如何快速高效學習C++?- 計算機軟體能力認證考試系統
試題編號:201312-1
試題名稱:出現次數最多的數時間限制:1.0s內存限制:256.0MB
問題描述 給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。輸入格式輸入的第一行只有一個正整數n(1 ≤ n ≤ 1000),表示數字的個數。
輸入的第二行有n個整數s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數用空格分隔。輸出格式 輸出這n個次數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。樣例輸入6
10 1 10 20 30 20樣例輸出10
//http://118.190.20.162/view.page?gpid=T5//得分:100#include <iostream>#include <map>#if(__cplusplus==201103L)#include <unordered_map>#else#include <tr1/unordered_map>namespace std{ using std::tr1::unordered_map;}#endifusing namespace std;#define um unordered_map#define test 0class solution{ map<int,int>m;public: solution(){//用map 按從小到大的順序保存輸入的數,並統計其出現的次數 int n=0; cin>>n; for(int i=0;i<n;i++){ int temp=0; cin>>temp; ++m[temp]; } } void solve(){ int res=0; int num=0; for(map<int,int>::iterator it=m.begin();it!=m.end();it++){#if test//用於檢查 cout<<it->first<< <<it->second<< <<res<<endl;#endif if(it->second>num){ num=it->second; res=it->first; } } cout<<res<<endl; }};int main(){ solution s; s.solve(); return 0;}
PS:
廣告時間啦~
理工狗不想被人文素養拖後腿?不妨關注微信公眾號:
推薦閱讀:
※Langlands綱領一瞥
※了不起的麥斯卡
※什麼是演算法
※Excel三招,算清投資複利
※為什麼你在面對數學時會焦慮不安?