1. 程式人生 > >csp 201609-1 最大波動

csp 201609-1 最大波動

問題描述

  小明正在利用股票的波動程度來研究股票。小明拿到了一隻股票每天收盤時的價格,他想知道,這隻股票連續幾天的最大波動值是多少,即在這幾天中某天收盤價格與前一天收盤價格之差的絕對值最大是多少。

輸入格式

  輸入的第一行包含了一個整數n,表示小明拿到的收盤價格的連續天數。   第二行包含n個正整數,依次表示每天的收盤價格。

輸出格式

  輸出一個整數,表示這隻股票這n天中的最大波動值。

樣例輸入

6 2 5 5 7 3 5

樣例輸出

4

樣例說明

  第四天和第五天之間的波動最大,波動值為|3-7|=4。

評測用例規模與約定

  對於所有評測用例,2 ≤ n ≤ 1000。股票每一天的價格為1到10000之間的整數。

  • 基本思路

這題屬於第一題,比較簡單,題意說白了就是說找出相鄰的兩個數之間的差的絕對值最大是多少,那麼一個for迴圈遍歷就好了。

  • 演算法思想

一個for迴圈,取一個最大值初始化為0,每兩個值的差的絕對值與這個最大值進行比較,如果比它大就更新最大值為這個兩個數的差的絕對值。

  • 流程
  1. 讀入一個n
  2. 輸入n個數
  3. 初始化最大值
  4. for迴圈進行進行遍歷,比較每兩個數的差的絕對值
  5. 輸出最大值
  • 程式碼實現

#include<cstdio>

#include<cstdlib>

using namespace std;

const int maxn=1009;

int a[maxn];

int main(){

    int n;

    scanf("%d",&n);///輸入數量

    for(int i=0;i<n;++i){

        scanf("%d",&a[i]);///讀入n個數據

    }

    int maxx=0;///初始化最大值為0

    for(int i=1;i<n;++i){

        maxx=abs(a[i]-a[i-1])>maxx?abs(a[i]-a[i-1]):maxx;///三母運算子,跟if else差不多,這個數與之前的那個數的絕對值大於

    }

    printf("%d\n",maxx);

    return 0;

}