【蓝桥】基础练习 数列特征(max_element(),accumulate()的使用)

问题描述
给出n个数,找出这n个数的最大值,最小值,和。

输入格式
第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
样例输入
5
1 3 -2 4 5
样例输出
5
-2
11
数据规模与约定
1 <= n <= 10000。
常规做法如下:

#include <iostream>
using namespace std;
int main()
{
	int n,max=-100001,min=100001,sum=0,t;
	cin>>n;
	for(int i = 0; i < n; i++)
	{
		cin>>t;
		if(t > max) max=t;
		if(t < min) min=t;
		sum+=t;
	}
	cout<<max<<endl<<min<<endl<<sum<<endl;
	return 0;
}

用STL算法做法:
知识点:
1.max_element(),min_element()简易讲解见链接:
https://blog.csdn.net/liuchuo/article/details/79580773
主要注意:返回的是迭代器,所以输出值的话要在前面加*
2.accumulate()函数简易讲解参考链接:
https://blog.csdn.net/u011499425/article/details/52756242
主要注意:头文件#include < numeric >,第三个形参则是累加的初值

#include <iostream>
#include <algorithm> 
#include <numeric>
//#include <vector>
using namespace std;
int main()
{
	//vector<int> a;
	int n;
	cin>>n;
	int a[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	cout<<*max_element(a,a+n)<<endl;
	cout<<*min_element(a,a+n)<<endl;
	cout<<accumulate(a,a+n,0)<<endl;
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41856733/article/details/87390246