我有一个多维数组,其中值是其中的一部分但是出于这个问题的目的,让我们假设它是一个简单的整数数组,因为值是我正在使用的唯一值。
所以整数数组:[14,14,14,10,12,12,12,8,7,10,7,6,8,8,6,5,5,3]
我想要一个功能,我可以放在一个例如104并让它选择使用哪些值而不留下余数,或者如果有余数,则选择给出最低余数的值。但是,每个值只能使用一次。
e.g。总共17个会选择一个10和一个7.总数如果18,如果只有10,11,9将选择10和9。
这背后的逻辑逃脱了我,所以我会非常感激任何帮助。如果这是一个因素,我在php编码。
编辑:这是我到目前为止所提出的,但效率不高$total_available = array_sum($units);
if ($total_available < $target) {
$deficit = $target - $total_available;
}
else {
$excess = $total_available - $target;
$d = $excess;
$i = $d;
$done = FALSE;
while (!$done) {
if ($i==0) { $done = TRUE; }
if (in_array($i, $units)) { $d -= $i; $i = $d; }
else { $i--; }
}
}