【CCF】最大波動

  • 2019 年 11 月 8 日
  • 筆記

版權聲明:本文為博主原創文章,遵循 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;

}