试题编号: | 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
首先我们想一下如何求出所有的差值的绝对值
首先我们可以进行一次遍历,从下标1开始,因为下标0(即第一个数字)没有前面的数字
计算出来的同时我们可以进行一次比较,如果大于max,就刷新max(max一开始可以设为-1,保证可以刷新,因为绝对值大于等于0)
最后直接输出max就好了
另外
abs对应了整型的绝对值,fabs对应了浮点型的绝对值
代码展示
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n=0;
int arr[1010]={0};
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>arr[i];
int max=0;
for(int i=1;i<n;i++)
{
if(abs(arr[i]-arr[i-1])>max)
max=abs(arr[i]-arr[i-1]);
}
cout<<max<<endl;
}
}