【发布时间】:2016-07-15 17:40:12
【问题描述】:
我需要实现一个 Haskell 函数,它接收一个 Int(卡车装载能力)和一个 Int 列表(可以在卡车上装载的盒子模型)。
定义哪些盒子模型必须优先放置在 卡车,要求容量更大的箱子 相对于可用空间,总是放在第一位。
该算法应返回要放置在卡车上的箱子模型列表。我不知道如何将此编程为功能范式:/
maximizeLoad 103 [15, 20, 5, 45, 34]
[45, 45, 5, 5]
谢谢!
【问题讨论】:
-
用另一种语言你会怎么做?
-
为什么不是
[34, 34, 34]?尝试阅读子集和问题并确定您的解决方案首先需要具备哪些属性。 -
这个问题看起来像背包(蛮力将是
maximumBy (compare `on` sum) . filter ((<= 103) . sum) $ subsequences [15,20,5,45,34]) - 但这不允许多次挑选物品 -
@RowanBlush 抱歉,我编辑了解决方案的属性。谢谢!
-
@ErikR 找到较重的盒子。添加 (heavierBox % truckCapacity) 较重的箱子。取小于该除法其余部分的最大值,并重复该过程。对吗?
标签: algorithm haskell optimization maximize