Я столкнулся с проблемой, с которой сталкиваюсь. У меня есть база данных с предметами, которые имеют значение «цена». Они связаны с различными «раундами», а «раунды» имеют «общее значение», где все эти значения «цена» этих элементов, вместе взятые, определяют «общее значение». Итак, я хочу выбрать, какие предметы отдать, а какие сохранить. Предполагается, что будет сохранено от 5% до 10% от общего значения, а остальное будет отдано.
Я мог бы просто выбрать все элементы в этом раунде, отсортировать по значению «цена», от низшего к высшему и затем:
if ($totSave < $totVal*0.1) { addToSaveArray($item); $totSave += $item['price']; }
Но у меня также есть список, который должен расставить приоритеты для элементов, настроенных так:
$prioList[] = array("name" => $list[$i], "price" => $price);
Итак, каков наилучший подход к этому? Должен ли я пройтись по $ prioList, проверить, совпадает ли какое-либо имя, а затем добавить цену к $ totSave или как вы думаете?
Помощь будет ОЧЕНЬ признательна!
Джим попросил меня опубликовать ответ, вот что я делаю 🙂 Так как это проблема с рюкзаком, я погуглил и нашел это:
https://github.com/acmeism/RosettaCodeData/tree/master/Task/Knapsack-problem-0-1/PHP
Мне также были нужны индексы, поэтому я выбрал верхний (глючный). (Невозможно опубликовать ссылку из-за низкой репутации …)
Так как тот был глючным, я добавил функцию «попробовать». Вот:
http://pastebin.com/AycE4Kzm
Других решений пока нет …