Algorithm 比例分配算法
假设有Algorithm 比例分配算法,algorithm,Algorithm,假设有n箱子,作为现金的容器 每个箱子必须装有相同面额的纸币$100,$20,$5,$1 然后现在定义了一个总金额,比如说27869美元 还有一个比例必须是每个箱子可以拆分的所需比例,比如 `30%` for `$100`, `40%` for `$20`, `20%` for `$5`, `10%` for `$1`, 因此,所有4个箱子构成了最终金额的全部(100%),最接近所需金额 最后,算法必须返回最接近的优化量,例如 $26982 我在考虑使用递归函数,从最大面额到最小面额,但
n
箱子,作为现金的容器
每个箱子必须装有相同面额的纸币$100
,$20
,$5
,$1
然后现在定义了一个总金额,比如说27869美元
还有一个比例必须是每个箱子可以拆分的所需比例,比如
`30%` for `$100`,
`40%` for `$20`,
`20%` for `$5`,
`10%` for `$1`,
因此,所有4个箱子构成了最终金额的全部(100%
),最接近所需金额
最后,算法必须返回最接近的优化量,例如
$26982
我在考虑使用递归函数,从最大面额到最小面额,但我不知道如何解决比例问题,请指教我。欢迎使用任何Java/C或伪代码 如果您的百分比需要精确,您可以使用的组合数量将非常有限
例如,在您的示例中,您的100美元钞票的数量始终是1美元钞票的3倍
一般来说,我会找到百分比最低的面额,从1张钞票开始,确定你需要多少张钞票,直到你超过总价值
对于每种面额,您可以确定钞票的数量,如下所示:
bills100 = Math.round(bills1 * percent100/percent1)
请注意,一般来说,您的百分比并不精确,但它们将尽可能接近。不,我不会为您编写代码。请澄清。。。百分比是指总美元价值的百分比,或者说是票据总数?输出是否为每个箱子中的票据数量?给出的百分比是可解的吗?换言之,如果给定的美元金额为1美元,我们是否可以为任何非1美元仓位提供一个非零百分比?将百分比除以其gcd,乘以相应的金额,并求和以获得最小的可能金额(391)。将目标金额除以该值,四舍五入并再次相乘(解决方案为27761)。