1. 程式人生 > >藍橋杯 演算法訓練 ALGO-90 出現次數最多的整數 陣列運算

藍橋杯 演算法訓練 ALGO-90 出現次數最多的整數 陣列運算

演算法訓練 出現次數最多的整數
時間限制: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;
}