在HackerRank中解决股票最大化的方法?

时间:2016-05-01 05:15:05

标签: c++

以下是我要解决的问题https://www.hackerrank.com/challenges/stockmax的链接。

我的方法:

从索引0到n的遍历。如果第二天的价格超过当天,我会购买股票。如果第二天的价格低于当天的价格,我会以当前价格卖出已经买入的股票。但是,我无法通过测试用例,也不知道为什么我的解决方案是错误的。

这是代码

#include<iostream>
#include<algorithm>
using namespace std;
int a[100005]={0};
int main()
    {
    int t,n;
    long long sum=0;
    cin>>t;
    while(t--)
        {
        sum=0;
        int cnt=0;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>a[i];
        int i=0;
        while(i<n)
            {
            while(a[i+1]>=a[i]&&(i+1)<n)
                {
                sum-=a[i];
                i++;
                cnt++;
            }
            sum+=(cnt)*a[i];
            cnt=0;
            i++;
        }
        printf("%lld\n",max(sum,0));
    }
    return 0;

}

1 个答案:

答案 0 :(得分:1)

不是从索引0到n遍历,而是向后遍历,即n到索引0&amp;应用逻辑来获得销售的最大值。这是一个线性扫描问题