藍橋杯---算法訓練 出現次數最多的整數

問題描述
  編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然後程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。
  輸入格式:第一行是一個整數NN £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
  輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例

樣例輸入

5
100
150
150
200
250

樣例輸出

150

思路及代碼說明:

我的想法是設置三個變量,分別用於記錄當前數組中出現次數最多的數,當前數組出現次數最多的數的個數,和數組中出現次數第二多的數的個數。

整型變量temp,記錄當前數組中出現次數最多的數,初值設爲數組的第一個元素,及a[0];

整型變量num,記錄數組中出現最多的數的個數,及temp出現的次數;

 整型變量fore,記錄數組中出現次數第二多的數的個數,初值爲1,不斷和num比較,更換num的值。

#include"iostream"
#include"algorithm"
using namespace std;

int main(){	
	int n,i,j;
	cin>>n;
	__int64 a[21];
	for(i=0;i<n;i++)
		cin>>a[i];
	int num=1,fore,temp=a[0];	
	for(i=0;i<n;i++){
		fore=1;
		for(j=i+1;j<n;j++){
			if(a[i]==a[j])
				fore++;							
			else				
				break;					
		}
		if(num<fore){
			num=fore;					
			temp=a[i];
		}
	}
	cout<<temp<<endl;	
	return 0;
} 

求教:

我的代碼只通過了80%的數據,還有20%數據沒有通過,但是wo我實在想不出來哪裏有問題,望各位大佬不吝賜教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章