让我们说有n
个箱子,作为现金的容器
每个bin必须包含相同面额的注释$100
,$20
,$5
,$1
然后现在定义了总金额,比如$27,869
每个垃圾箱可以拆分所需的比例MUST BE
,比如说
`30%` for `$100`,
`40%` for `$20`,
`20%` for `$5`,
`10%` for `$1`,
所以所有4个分档构成了最接近所需金额的最终金额的整个(100%
)
最后算法必须返回最接近的优化量,也就是说
$26,982
我正在考虑使用递归函数,从最大面额到最小面额,但我不知道如何解决比例,请赐教。任何Java / C或伪代码都表示赞赏。
答案 0 :(得分:0)
如果您的百分比需要精确,那么您可以使用的组合数量非常有限。
例如,在你的例子中,你总是会得到3美元钞票的3倍。
一般情况下,我会发现具有最低百分比的面额,从1个账单开始,确定您需要多少其他账单,直到超过总价值。
对于每个其他面额,您可以确定账单的数量:
bills100 = Math.round(bills1 * percent100/percent1)
请注意,一般情况下,您的百分比不准确,但它们会尽可能接近。不,我不会为你编写代码。