藍橋杯 演算法訓練 ALGO-90 出現次數最多的整數 陣列運算
阿新 • • 發佈:2018-12-21
演算法訓練 出現次數最多的整數
時間限制:1.0s 記憶體限制:512.0MB
問題描述
編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。
輸入格式:第一行是一個整數N,N £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250
樣例輸出
150
分析:這道題其實很簡單,就連輸入本身都是按順序從小到大輸入的,只需要我們判斷哪個數出現次數最多罷了。
但是最初我做這道題的時候,提交了好幾遍,都不是滿分,後來實在找不到什麼問題,就問了度娘,然後才知道,原來測試中有兩組資料輸入個數是負值。
N小於等於20,但是N不一定大於0啊。可以,你個妖怪出題人(╯‵皿′)╯︵┻━┻
#include <iostream> using namespace std; int main() { int n; cin >> n; if (n > 0) { int *a = new int[n]; int b; int count = 1; int temp = 1; cin >> a[0]; b = a[0]; for(int i = 1; i < n; i++) { cin >> a[i]; if (a[i] == a[i - 1]) { temp++; if (temp > count) { count = temp; b = a[i]; } } else { temp = 1; } } cout << b; delete [] a; } return 0; }