选择要用于满足总数的值

时间:2014-09-09 11:25:45

标签: php algorithm math logic

我有一个多维数组,其中值是其中的一部分但是出于这个问题的目的,让我们假设它是一个简单的整数数组,因为值是我正在使用的唯一值。

所以整数数组:[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--; } 
  } 
}

0 个答案:

没有答案