如何在大小爲n的(非負)整數數組中尋找最大乘積大小爲k的乘積子序列。我沒有找到任何好的解決方案。子序列不必是連續的。例如:尺寸爲3的10,1,3,9,7,8,5中的3,7,8。最大乘積遞增子序列
1
A
回答
1
嘗試降低至之前看過的問題。
- 解決最大長度增加的子序列問題。
- 解決最大和增加子序列問題。
- 想想產品如何轉換爲總和。 (提示:對數,爲什麼?)
- 解決最大產品遞增的子序列問題。
+0
找出答案中的內容有點困難,但+1是一個好主意。 3.提示第2部分 - 「log ab = log a + log b」。 – Dukeling 2013-04-11 07:40:10
+0
總的來說,我認爲它顯示出攻擊看似棘手問題的總體策略非常重要。一種嘗試的方法是減少你以前見過的問題。我認爲最大長度增加子序列是一個典型的動態規劃問題。所以首先你必須知道如何去做(因爲你需要一般的動態編程策略)。然後你可以通過解決最大總和增加的子序列問題來使其變得更復雜。然後,一旦你注意到#3,你意識到你的問題只是減少到#2。 #3是你提到的日誌技巧 – 2013-04-11 18:16:10
1
在Haskell,你可以這樣做,雖然它可能不是非常快大的n:
import Data.List (maximumBy, sort, subsequences)
maxSubProduct k =
maximumBy (\a b -> compare (foldr (*) 1 a) (foldr (*) 1 b))
. filter (\x -> x == sort x)
. filter ((==k) . length)
. subsequences
OUTPUT:
*Main> maxSubProduct 3 [10,1,3,9,7,8,5]
[3,7,8]
相關問題
- 1. 最大遞增子
- 2. 最大最長遞增序列的
- 3. 最大的單調遞增或遞減的子序列
- 4. 最大重量遞增子
- 5. 遞歸的記憶遞增最長遞增子序列
- 6. 循環最長遞增子序列
- 7. 最長遞增循環子序列
- 8. 顯示最長的遞增子序列
- 9. 如何找到最大數量的遞增子序列?
- 10. 最長遞增子序列遞歸版本
- 11. 查找最大增加的最長子序列
- 12. 序言 - 尋找最長遞增子
- 13. 從多個遞增序列中選擇最大值的總和
- 14. 休眠和Oracle誇大序列遞增
- 15. 計算因子中兩個序列的笛卡爾乘積
- 16. 的Java:最長遞增子
- 17. 最長共同遞增子序列動態編程
- 18. 最小長度L(遞歸)的最大連續子序列和
- 19. 最大和最小組乘以2列
- 20. 最大面積
- 21. 用F#計算笛卡爾乘積列表的乘積
- 22. OCaml searchin增長最長的子序列
- 23. 最長增加子序列的應用
- 24. 最長增加的子序列2d
- 25. 最長增加子序列,使得LIS中的最後一個元素最大
- 26. 最大總和/面積子矩陣
- 27. 使用遞歸找到所有可能的最長遞增子序列
- 28. 數字中連續數字的最大乘積python
- 29. Python上數組中兩個最大元素的乘積
- 30. USACO - 動態規劃 - 最大遞減子序列
這看起來像漢王。請描述你已經嘗試了什麼。 – 2013-04-11 00:39:12
它不是一個hw。我只是在看一些面試問題,並遇到了這個問題。 – scv 2013-04-11 20:29:59
我很抱歉,看到您嘗試過的內容仍然很高興,以便我們可以幫助您引導您使用當前方法提供的解決方案。 – 2013-04-11 20:51:32