我遇到了一个问题,我面临的任务。我有一个数据库,其中的项目都有一个"价格"值。它们与不同的"回合"相连,"回合"有一个"总价值",而这些"价格"价值组合在一起定义了"总价值"。所以,我想选择哪些东西要送人,哪些要保存。"总价值"的5%到10%应该存起来,其余的捐出去。
我可以选择那一轮中的所有商品,按"价格"-价值,从低到高排序,然后:
if ($totSave < $totVal*0.1) { addToSaveArray($item); $totSave += $item['price']; }
但我也有一个列表,应该优先考虑项目,设置如下:
$prioList[] = array("name" => $list[$i], "price" => $price);
那么,最好的方法是什么?我应该循环遍历$prioList,检查是否有匹配的名称,然后将价格添加到$totSave中吗?
帮助将非常感激!
Jim让我张贴答案,所以这就是我正在做的:)因为这是一个背包问题,我谷歌了一下,发现了这个:https://github.com/acmeism/RosettaCodeData/tree/master/Task/Knapsack-problem-0-1/PHP
我也需要索引,所以我选择了最上面的(有bug的)索引。(无法发布链接,由于低rep…)
由于那个有bug,我添加了一个"try"函数。下面是:http://pastebin.com/AycE4Kzm