2016-05-01 7 views
-4

ここに私が解決しようとしている問題https://www.hackerrank.com/challenges/stockmaxへのリンクがあります。HackerRankで在庫を解決するアプローチを最大限に活用できますか?

マイ・アプローチ:

インデックス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; 

} 
+0

'の最大値を取得するためのロジックを適用しますa [i + 1]は以前のテストケースからのデータを含むことができる。注意してください。 – MikeCAT

+0

ありがとうございますMikeCAT。私はそれを理解し、そのエラーを修正する、一度私は単一のテストケースのための実用的な解決策を得る:) – user

答えて

1

の代わりにnまでのインデックス0からトラバースである、すなわち後方トラバースn個のインデックス0 &にselling.Itのリニアスイープ問題

関連する問題