我有一个固定的重量列表:
int[] weights = new int[] { 10, 15, 20 };
并且有一个目标:
int target = 28;
我正在寻找一种算法,将
target
表示为从weights
的元素之和(允许重复),使得target
被匹配或超过,实现尽可能接近target
,在此基础上,所使用的数量应该最小化。因此,对于上述输入,我希望返回
10 20
或15 15
,因为30
是我们能够得到的最接近的数,而对于使30
的选项来说,这两个比10 10 10
更好。对于
target
为39
,输出应该是20 20
,而不是15 15 10
或10 10 10 10
。对于
target
为14
,输出应该是15
。除了常规的foreach循环,这里是否有一个更好的方法?我想检索数组中可用的最大值,并检查目标是否为负数,如果不是,则继续下一个值。
这不是作业 :)