2012-11-29 90 views
0

雖然我很好的任何其他編程語言,儘量給思想/答案在PHP購買/出售股票算法

有具有以下模式的陣列;

$arr = array(
    0 => '12', 
    1 => '38', 
    2 => '25', 
    3 => '4', 
    ... 
    365 => '45', 
); 

它基本上是全年365日的價值和股票價格的數組。

As far as I can remember the question;

  • 由於$arr作爲輸入,寫一個函數,這樣你就可以買股票,當它是低賣當它是高的。函數必須返回以下數組

    $return = array(
        'buy-date' => '', // day you should've bought, so it price should be low 
        'sell-date' => '', // day you should've sold, so its price should be high so you make profit 
        'profit' => '' // value of profit 
    ); 
    
  • 重要說明;購買股票後不能超過30天。

因此,關鍵是對於任何給定的時間段/月也許你想買在最低日期,但因爲你不能在30天之後,你買了股票賣給你可能想購買4日最低那麼你仍然可以在下一個最暢銷的日子內出售。 (希望我清楚這一點)

除了給我的代碼片段,給我的想法,算法等,我想了解如何處理這樣的問題。

+0

想要最大的利潤嗎?如果沒有,那就更容易一些。嘗試使用asort排序數組,並比較最低索引(鍵)和最高索引30天 – user1283182

+0

不能使用PHP內置函數,如asort,我也會對你的答案說不,因爲你不能簡單地說分鐘這最大這就像我說你可能想在第四個最低的日子買入,因爲它可能會多2-3美元,但銷售日期(在未來30天內)可能會更有利可圖。 – vknyvz

回答

3

蠻力方法很容易編碼。對於0-335的每一天,如果您在當天購買並在接下來的1-30天內出售,請計算利潤。如果利潤大於迄今爲止發現的最大利潤,請將其記爲最大利潤以及買入和賣出日期。

+0

omg這是完美的意義這是OMG這是如此簡單,爲什麼我爲什麼不能想到這個 但你是什麼意思的「計算利潤」? – vknyvz

+0

我認爲這是最明顯的部分:利潤是買賣價格之間的差額。 – Amadan

+0

除了悔之晚矣我想我理解了它 - 順序排列 - 從相反的順序 下來 - 挑頭最高,然後回去讓你應該購買的那一天,(所以你知道的低,你知道利潤) - 與遞歸函數選擇第二高(第三最高)等 omg這真的不難,把我的冒險頭到牆壁!!!!! – vknyvz