gpt4 book ai didi

php - 我需要一种类似于测试条件的 for 循环重新评估行为的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:37:57 27 4
gpt4 key购买 nike

我正在迭代放置在容器中的一组框。例如,一个容器可以存储“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;
}
}

我该如何解决这个问题?

最佳答案

你正在考虑错误的循环。 for——类似循环通常用于为输入中的每个项目一次做一些事情。

但这不是您需要的东西。您需要反复检查输入的项目,将它们放在一边,然后再回来取,直到所有的项目都分配到容器中。

有很多方法可以写这个(循环、迭代器、递归函数、带逻辑的对象……)。在循环方面,您可以尝试这样的 do-while:

do {

// take items out of $boxes until you fill <=10 units container

} while( ! empty( $boxes ) );

关于php - 我需要一种类似于测试条件的 for 循环重新评估行为的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com