您好,登錄后才能下訂單哦!
問題描述
編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即并列第一,那么只打印比較小的那個值。
輸入格式:第一行是一個整數N,N? £? 20;接下來有N行,每一行表示一個整數,并且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250
樣例輸出
150
當輸入的數不相同時temp會變回1;而count沒有變回1; if (temp > count) {
count = temp;
b = a[i];
這個語句就能體現出如果兩個元素值出現次數相同則打印最小的,因為例如如果最后一個是200,當temp再次變為2,但它不大于count,所以b不會變,還是上一個。
#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;
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。