Я перебираю массив ящиков, которые помещены в контейнер.Например, контейнер может хранить уровень "10" ящиков.если массив [6, 5, 2].У меня будет два контейнера: один с [6, 2] и один с [5], массив был повторен, он захватил 6, пропустил 5 и захватил 2. Он пропустил 5, потому что 6 + 5 равен 11. Контейнер не может иметь большечем уровень 10. Пропущенный 5 помещается в отдельный массив для последующей итерации.
Ниже я подведу итог моей проблемы.Это не рабочий код.Я просто демострирую свою проблему.
$boxes = [2, 3, 2, 5, 8, 2, 10, 2, 5, 6]; // my boxes
$separated_boxes = [];
$items = [];
for($i = 0; $i < count($boxes); $i++){
$items[] = $box[$i]; //add box to array
$result = Class::packBoxes($items) // check if the box(es) can be packed
//if the current box cannot be packed it is separated
if($result == false)
{
$separated_boxes[] = $box[$i];
}
//if the loop reaches the end a new loop should start with the separated boxes
//Apparently I cannot do this because the for conditions are avalidated only once
if((($i + 1) == count($boxes) && count($separated_boxes) > 0)){
$itens = [];
$i = 0;
$boxes= $separated_boxes;
$separated_boxes= [];
}
}
packBoxes($boxes)
{
if(canPack($box)
{
return true;
}
else{
return false;
}
}
Как мне решить эту проблему?