蓝桥杯 出现次数最多的整数 C++算法训练 HERODING的蓝桥杯之路

资源限制
时间限制:1.0s 内存限制:512.0MB
  问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150

解题思路:
该题也是一道送分题,但是解题过程要注意细节。
①是在定义数组的时候,注意用long long定义,否则可能会溢出。
②n的输入值可能为负数,这时候就要判断,为负数则程序直接终止。
③当判断到数组最后一个元素时,要额外判断最大数目,因为没有下一个不同的数让你做判断了。
代码如下:

#include<bits/stdc++.h>

using namespace std;

int main() {
	int n, i;
	long long res;//res存储最多的数的值 
	long long a[21];
	int num = 0;
	cin >> n; 
	if (n <= 0) return 0;
	for (i = 0; i < n; i ++){
		cin >> a[i];
	}
	int count = 1;
	for (i = 1; i < n; i ++){
		if(a[i] != a[i - 1]){
			if(count > num) {
			num = count;
			res = a[i - 1];
		} 
			count = 1;
		} else{
			count ++;
		}
		if (i == n - 1){
			if(count > num) {
				num = count;
				res = a[n - 1];
			}
		}	
	}
	cout << res;
	return 0; 
}

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/106133429