2016-07-10 8 views
-2

ok問題は配列に5つの値を与えます。彼らはあなたが株式を購入して売る価値を表します。あなたは買うまで売ることができません。最初の価値は買いです。負の場合(たとえ-1000が-10000よりも利益が多い)でも、最大または最大の利益を見つける必要があります。適切なメイン関数とヘッダーがあると仮定できます。別の日に買い/売りで最大利益を見つけよう

int solution(prices[]) { 

int N = 5; //assumption is can only buy sell for 5 days so prices = [0-4] 


int difference; 
int max_profit = -100000000000; 

for (int p = 0; p < N; p++) 
{ 
    for (int q = p + 1; q < N; q++) 
    { 
     difference = prices[q] - prices[p]; 
     if (difference > max_profit) 
     { 
      max_profit = difference; 
     } 
    } 
} 

return max_profit; 

を私はmax_proft = -100000000000を含めたアウトしてそれを解決することができるようにしたい:次のコードは、私はそれを解決する方法です。その可能性のある誰かが売り買いでそれ以上のものを失う可能性があります。何かご意見は?

+0

代わりに 'int max_profit = std :: numeric_limits :: lowest();'を使うことができます。 – ArchbishopOfBanterbury

+0

どのような考えですか?小さい番号を使用してください。次に、それがあなたにどのような用途に使われる必要があるかについて考えてみましょう。 – juanchopanza

+0

最初のデータセット要素から初期値を引きます。 'int max_profit = prices [1] - prices [0];'後でそれを奪うのでなければ、もしあれば、再びそれをして、 'N> = 2'と仮定してください。 – WhozCraig

答えて

0

max_proft= -100000000000を含めることで解決できるようにしたいと考えています。

どういうわけか、最低限の開始値が必要です。それでは、あなたの心配は何ですか?

使用当初、その後max_profitのための可能な最小の数をしたい場合は、あなたが得ることができる最低の開始値はstd::numeric_limits<int>::lowest();

+0

まだ初心者とhaventはそれをまだ学んだ。どのような方法で初心者のスキルをそれを行うには? –

1

です:

#include <limits> 

//... 

int max_profit = std::numeric_limits<int>::lowest(); 

そして、誰かが株取引でより多くのお金を失ってしまった場合彼らはいくつかの深刻な問題を先に持っています...

+0

haha​​ええ、私は非常に高度にimporbableですが、不可能ではない、今はおそらく誰が知っている。初心者のスキルで 'int max_profit = std :: numeric_limits :: lowest()'を実行する予定はありますか?私はちょうどC言語を学び始めました –

+0

'std :: numeric_limits :: lowest()'は、単にint型が保持できる最小の値、つまり-2147483648を返します。上記を使って 'max_profits'をこの値に設定するよりも、それを使うのはそれほど多くありません。 – ArchbishopOfBanterbury

+0

32ビットのintと大きな危機(http://blogs.wsj.com/economics/2012/10/01/total-global-losses-from-financial-crisis-15-trillion) /)... –

関連する問題