藍橋杯-演算法訓練-出現次數最多的整數
阿新 • • 發佈:2019-01-02
演算法訓練 出現次數最多的整數
問題描述
編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。
輸入格式:第一行是一個整數 N, N £ 20;接下來有 N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250 樣例輸出 150
編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。
輸入格式:第一行是一個整數 N, N £ 20;接下來有 N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
100
150
150
200
250 樣例輸出 150
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n,max=1,num=1; //max出現最多次的數的出現次數 cin >> n; int digital[20]; vector<int> number; //存放不同數字出現的個數 for (int i = 0; i < n; i++) cin >> digital[i]; for (int i = 1; i < n; i++) { if (digital[i-1] == digital[i]) { num++; } else if(digital[i-1]!=digital[i]) { if (max < num) max = num; number.push_back(num); num = 1; } if (digital[i - 1] == digital[i] && i == n - 1) { if (max < num) max = num; number.push_back(num); } if(digital[i-1]!=digital[i]&&i==n-1) { if (max < num) max = num; number.push_back(num); } } for (int i = 0; i < number.size(); i++) { if (number[i] == max) { int a = 0; //出現最多次數的位置,把前面不同的數的出現次數加起來獲得 for (int j = 0; j < i; j++) a += number[j]; cout << digital[a] << endl; break; } } return 0; }