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