版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/84934014
试题编号: | 201609-1 |
---|---|
试题名称: | 最大波动 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。 输入格式 输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。 第二行包含n个正整数,依次表示每天的收盘价格。 输出格式 输出一个整数,表示这只股票这n天中的最大波动值。 样例输入 6 2 5 5 7 3 5 样例输出 4 样例说明 第四天和第五天之间的波动最大,波动值为|3-7|=4。 评测用例规模与约定 对于所有评测用例,2 ≤ n ≤ 1000。股票每一天的价格为1到10000之间的整数。 |
解题思路:
这道最大波动的题和前面的那道最小差值的题可以说是用同一个解题套路。只是这题无需对数组排序,直接比较相邻数字的绝对差值,调用max函数来把俩者间的较大值赋给ans,最后输出的ans就是这个数组的最大波动。
100分代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n; //小明拿到的收盘价格的连续天数
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
{
cin >> a[i]; //每天的收盘价格
}
int ans = -1e5; //ans用来存放最大波动
for (int i = 0; i < n-1; i++)
{
ans = max(ans,abs(a[i+1]-a[i])); //调用min函数来返回俩者中的最大值
}
cout << ans << endl;
return 0;
}