题目描述
输入n个整数,询问这些数中的最大值是多少?
输入输出格式
输入格式:
第1行:一个整数n,表示输入整数的个数
第2行:n个整数
输出格式:
一个整数,表示之前整数中的最大值
样例输入输出
样例输入#1:1
25
3 5 6 4 1
样例输出#1:1
6
解析
我们要做的就是求出输入数据中的最大值
我们可以这样做:每读入一个数,将这个数和我们读入这个数之前的最大值比较,如果这个数比之前的最大值要大,那么更新最大值,否则跳过这个数。当我们所有数都进行完上述判断之后,我们便得到了这组数据的最大值
思路很简单,但这里有一个问题:我们每次将读入的数和之前的最大值比较,那我们读第一个数的时候和什么比较呢?换句话说,我们的最大值应该怎么初始化呢?
这是一个令人头疼的问题,这里给出两种解决方式
将最大值赋值为第一个数据
我们将最大值赋值为第一个数据,相当于让第一个数据直接参与了和最大值的比较
如果后面有数据大于它,那么他会被更新
如果没有,那么它就是最大值
我们发现,这样的操作是可以达到我们的要求的
具体见代码1
假想极小值
我们可以将最大值初始化为一个极小值,我们后面的数据肯定要比这个极小值要大,因此,它会被后面的数据(往往是第一个数据)更新
在用这种方法时,我们一定要根据题目给出的数据范围理性分析,避免出现数据溢出/极小值不够小的问题
具体见代码2
实现的过程(以样例为例):
先令maxn = -100000(感觉够小了)
下面开始读入数据:
1:3 > -100000,maxn变为3(这样就更新了最大值)
2:5 > 3,maxn变为5
3:6 > 5,maxn变为6
4:4 < 6,maxn不变,为6
5:1 < 6,maxn不变,为6
这样,我们就得到了这些数据中的最大值6
标程
代码1
1 |
|
代码2
1 |
|
小结
记录最大值的方法,虽然算不上什么算法,但确实十分重要,是很多算法的基础。在很长时间的学习后,当你开始学习更高级的最大值维护方法的时候,你就离成功不远了~