如何在大小为n的(非负)整数数组中找到大小为k的最大乘积上升子序列。我没有找到任何好的解决方案。子序列不需要是连续的。例如:10,1,3,9,7,8,5中的3,7,8,大小为3.
答案 0 :(得分:1)
尝试减少您之前见过的问题。
答案 1 :(得分: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]