我有一组非负值。我想构建一个总和为 20 的值数组,以便它们与第一个数组成比例。
这将是一个简单的问题,除了我希望比例数组的总和正好为 20,以补偿任何舍入误差。
例如,数组
input = [400, 400, 0, 0, 100, 50, 50]
会产生
output = [8, 8, 0, 0, 2, 1, 1]
sum(output) = 20
然而,大多数情况下会有很多舍入误差,比如
input = [3, 3, 3, 3, 3, 3, 18]
天真地屈服
output = [1, 1, 1, 1, 1, 1, 10]
sum(output) = 16 (ouch)
有没有一种分配输出数组的好方法,以便每次加起来最多为 20?