问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。