PHP打包解决方案-如何平均分配项目

PHP打包解决方案-如何平均分配项目,php,solution,packing,Php,Solution,Packing,参考stackoverflow中的文章,该解决方案是用Ruby脚本提出的。但是我已经翻译成了PHP脚本,也许可以帮助别人有更好的想法,下面是代码: 比如说我们的行李清单 $list_of_bags=数组(11,41,31,15,15,66,67,34,20,42,22,25); rsort(行李清单) 所有行李的总重量 $weight\u of_bags=数组总和($list\u of_bags) 我们有多少集装箱可供使用? $number__容器=4 一个集装箱的重量应该是多少? $weigh

参考stackoverflow中的文章,该解决方案是用Ruby脚本提出的。但是我已经翻译成了PHP脚本,也许可以帮助别人有更好的想法,下面是代码:

比如说我们的行李清单 $list_of_bags=数组(11,41,31,15,15,66,67,34,20,42,22,25); rsort(行李清单)

所有行李的总重量 $weight\u of_bags=数组总和($list\u of_bags)

我们有多少集装箱可供使用? $number__容器=4

一个集装箱的重量应该是多少? $weight_/集装箱=$weight_/集装箱数量

我们为每个容器创建一个包含空数组的数组 $containers[]=array()
$total=0

每包 foreach($bag的行李列表){ 对于($i=0;$i)
$total=(isset($containers[$i])?数组和($containers[$i]):0;
如果($total+$bag<$weight\u/集装箱){
$containers[$i][]=$bag;
打破
}
} }  
输出包含项目数量和总重量的所有容器 foreach($index=>$container的容器){
“回声”容器 $index具有“
回声计数($container);
回声“;
回声“项目和重量:;
回波阵列总和($container);
回声“; }

输出应如下所示:

容器0有3个项目和重量:83
容器1有3个项目和重量:96
集装箱2有2个项目和重量:87
容器3有2个项目和重量:76

容器4有2个项目和重量:47

ruby解决方案有一个反向排序,以便首先将最大的项目排序到一个桶中。在声明$list_of_bags后添加了rsort($list_of_bags)。
    $total = (isset($containers[$i])) ? array_sum($containers[$i]) : 0;
    if($total + $bag < $weight_per_container){
        $containers[$i][] = $bag;
        break;
    }
} }