1. 程式人生 > >笨蛋難題4 買股票

笨蛋難題4 買股票

對於 100%的資料:n<=1000000; 
對於 100%的資料:股票價格不超過 1000000000。 

題解:

題目給的n過多的話,如果暴力求解,兩個迴圈遍歷,一定會時間超限。從別人那裡看到的做法就是,首先將第一個數儲存下來,記為minn,然後開始迴圈輸入剩餘的n-1個數,迴圈裡進行比較,輸入值為value,首先value與minn作差,差值與cha這個變數進行比較,如果cha<value-minn,那麼就說明我們找到了一個新的最大差值,且value一定是在minn後面的,隨即把這個差值記錄下來賦給cha這個變數。然後value與minn進行比較,如果value<minn,那麼找到了新的最小值minn。不用擔心會出現資料當中會出現最大值在最小值前面出現的情況。因為我們已經有一個變數cha記錄了每一個value之前出現的那個最大差值,所以不需要擔心這個問題。只需要在之後繼續尋找最大差值就好了。

程式碼如下: #include <iostream>
#include <bits/stdc++.h>
using namespace std; int main()
{
//  freopen("in.txt","r",stdin);
    int n,value,minn,cha=0;
    scanf("%d",&n);
    scanf("%d",&minn);
    for(int i=0;i<n-1;i++)
    {
        scanf("%d",&value);         if(cha<value-minn)
            cha=value-minn;
        if(minn>value)
            minn=value;
    }
    printf("%d",cha);
    return 0;
}