Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 比例分配算法_Algorithm - Fatal编程技术网

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)。