问题描述   编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数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;
}