zoukankan      html  css  js  c++  java
  • 2017级算法第三次上机-F. SkyLee炒股票

      这道题其实是股票系列的一道很经典的题目,即只可以买卖一次所带来的最大收益。

    题目给定的是每天相对于前一天的的收益,所以这道题可以简化为连续n个数的最大值问题。

    这道题的算法有一点贪心的思想。就是设置curnum和maxnum从开始到末尾扫描,curnum不断加加,同时利用curnum不断更新maxnum。同时如果curnum小于零,那么就抛弃掉前面的数,curnum重新置为0。继续往后扫描。

    同时助教可能是设置了一个小的trick 即收益的值是恒大于零的,如果最大值是负数,那其实可以不参与任何交易。

    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    int main()
    {
        long long n,i,j,k,num;
        long long curnum,maxnum;
        while(~scanf("%lld",&n)){
            
            curnum=maxnum=0;
            for(i=1;i<=n;i++){
                scanf("%lld",&num);
                curnum+=num;
                if(curnum>maxnum)
                    maxnum=curnum;
                else if(curnum<0)
                    curnum=0;
            }
            if(maxnum > 0)
                printf("%lld
    ",maxnum);
            else printf("0
    ");
        }
         
        return 0;
    }
  • 相关阅读:
    Manacher算法
    [SCOI2010]生成字符串
    [HNOI2008]GT考试
    矩阵乘法
    关于主席树
    Spring 书籍
    Spark书籍
    TimeMeasure
    Dynamic login
    Image quality evaluation
  • 原文地址:https://www.cnblogs.com/visper/p/10097400.html
Copyright © 2011-2022 走看看