Re: [討論] 令人印象深刻的遞迴問題?

看板C_and_CPP作者 (好問題..)時間13年前 (2011/04/04 20:17), 編輯推噓3(3011)
留言14則, 5人參與, 最新討論串7/9 (看更多)
※ 引述《Ohwil ( )》之銘言: : ※ 引述《yauhh (喲)》之銘言: : 假設前面n個存在一個比較好的交易 : 第i個時間買si 第k個時間賣sk, 價差sk-si k>i : 檢查第n+1個時間點是否可以賣 : (不考慮買,因為你不知道會不會有n+2的時間點) : (如果可以賣,就把i,k的值換掉) : 只要在前面n個多存一個最小值 min_n 就可以達到O(n) : 應該就是遞迴的思考了吧? 哇..再來獻醜一次,這次用Ohwil大大的演算法,應該寫對了吧? #include <stdio.h> #include <stdlib.h> int main() { double prices[] = {55.39, 109.23, 48.29, 81.59, 81.58, 105.53, 94.45, 12.24}; double min = 9999, max_diff = 0; int i; for(i = 0; i < 8; i++) { if(prices[i] < min) { min = prices[i]; } if((prices[i] - min) > max_diff) { max_diff = prices[i] - min; } } printf("%lf\n", max_diff); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.224.206 ※ 編輯: curist 來自: 111.251.224.206 (04/04 20:17)

04/04 20:24, , 1F
你這個是不管買賣時間點的一次做法.
04/04 20:24, 1F

04/04 20:25, , 2F
你這個是不管買賣時間點先後的一次做法.
04/04 20:25, 2F

04/04 20:25, , 3F
@_@
04/04 20:25, 3F

04/04 20:40, , 4F
你實作O大的演算法, 卻另外回另一篇, 所以是要我們看
04/04 20:40, 4F

04/04 20:40, , 5F
哪篇= =+
04/04 20:40, 5F

04/04 21:12, , 6F
呃..所以是要推文打code嗎 = =? 然後這樣也是買先賣後吧
04/04 21:12, 6F

04/04 21:13, , 7F
賣的時間一定比買的時間晚,不過的確只買賣一次 @@
04/04 21:13, 7F

04/04 21:15, , 8F
要買賣多次也是能一個for跑完吧,就在更新min的地方
04/04 21:15, 8F

04/04 21:15, , 9F
將max_diff加總到一個sum_diff就行了
04/04 21:15, 9F

04/04 21:17, , 10F
用置底網址貼然後附個網址一行就完了, 也比較美觀
04/04 21:17, 10F

04/04 21:20, , 11F
看起來跟 stackoverflow 裡的版本差不多,所以結果應該對
04/04 21:20, 11F

04/04 22:06, , 12F
啊..忘了可以貼網址
04/04 22:06, 12F

04/04 22:36, , 13F
我更正我前面的推文.
04/04 22:36, 13F

04/04 22:38, , 14F
這方法的確可以提供先買後賣最大利益的價值數值.
04/04 22:38, 14F
文章代碼(AID): #1DcRR4l3 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 7 之 9 篇):
文章代碼(AID): #1DcRR4l3 (C_and_CPP)