У меня есть эта группа продуктов:Как разбить эти продукты на пакеты?
Product Quantity Weight Per Unit
pro#1 7 5kg
pro#2 5 5kg
Я хочу, чтобы разделить эти продукты в пакеты, но максимальный вес пакета составляет 22кг.
Предположим, что у меня есть эта таблица в массиве, мне нужен алгоритм для решения этой проблемы.
Это то, что я пробовал до сих пор.
$products = array(
array('weight'=> 5, 'quantity' => 7),
array('weight'=> 5, 'quantity' => 5),
);
$max_weight = 22;
$packs = array();
$packs_count = 1;
foreach ($products as $product){
while ($product['quantity'] != 0) {
$pack[$packs_count]['weight'] = $pack[$packs_count]['weight'] +$product['weight'];
if($pack[$packs_count]['weight'] >$max_weight){
$pack[$packs_count]['weight'] = $pack[$packs_count]['weight'] - $product['weight'];
$packs_count++;
}
$product['quantity']--;
}
}
Код не может получить последний пакет в порядке.
[Обмен вашими исследованиями помогает каждому] (http://meta.programmers.stackexchange.com/questions/6559/why-is-research-important). Расскажите, что вы пробовали и почему это не соответствовало вашим потребностям. Это демонстрирует, что вы потратили время, чтобы попытаться помочь себе, это избавляет нас от повторения очевидных ответов и, прежде всего, помогает вам получить более конкретный и релевантный ответ. Также см. [Ask] – gnat
@gnat Я обновил вопрос. Благодарю. –
Почему вы не спрашивали при переполнении стека? http://meta.stackexchange.com/a/129632/165773 – gnat