У меня возникла проблема с задачей, с которой я столкнулся. У меня есть база данных с элементами, все из которых имеют значение «цена». Они подключены к разным «раундам», а «раунды» имеют значение «tot-value», где все эти значения «цена» - все вместе образуют «tot-value». Итак, я хочу выбрать, какие предметы отдать и что сохранить. Предполагается, что от 5% до 10% от «tot-value» будет сохранено, а остальные будут отданы.Алгоритм выбора/сортировки (рюкзак)
Я мог бы просто выбрать все элементы в этом раунде, сортировать по «цене» -значение, низшего к высшему, а затем:
if ($totSave < $totVal*0.1) { addToSaveArray($item); $totSave += $item['price']; }
Но у меня есть список, который должен расставить приоритеты элементов, настроены следующим образом:
$prioList[] = array("name" => $list[$i], "price" => $price);
Итак, что является лучшим подходом к этому вопросу? Пропустить цикл через $ prioList, проверить, совпадает ли какое-либо имя, а затем добавить цену в $ totSave или что вы думаете?
Помощь была бы очень признательна!
'select sum (value) from table group by name'? – twentylemon
Не может этого сделать, поскольку у меня есть список для определения приоритетов. Но я сузил его до «проблемы с рюкзаком». Я посмотрю, как это происходит :) – Fredrik
«сузился» до np-полной проблемы. получайте удовольствие от этого! – twentylemon