我有一个固定的权重列表:
int[] weights = new int[] { 10, 15, 20 };
和一个目标:
int target = 28;
我正在寻找一种算法来表示(允许重复)target
中的元素总和,weights
使得target
匹配或超出,实现最接近的匹配target
,并且在此范围内,使用的权重数量被最小化。
因此,对于上述输入,我希望返回10 20
或15 15
返回,因为30
我们可以得到尽可能接近的结果,并且在 make 的选项中30
,这两个都比10 10 10
.
使用target
of 39
,输出应该是20 20
而不是,比如说,15 15 10
或10 10 10 10
。
使用 a target
,14
输出应该是15
。
除了常规的 foreach 循环之外,这里还有什么好的方法吗?我正在考虑检索数组中可用的最大值并检查目标是否为负,如果不是,那么让我们去寻找下一个值。
这不是家庭作业:)