请参阅stackoverflow中的文章How to divide items equally,在Ruby脚本中提出了解决方案。但我已经翻译成PHP脚本,可能可以帮助别人有更好的想法,这是代码:
让我们说明我们拥有的行李清单
$ list_of_bags = array(11,41,31,15,15,66,67,34,20,42,22,25); rsort($ list_of_bags);
所有行李的总重量
$ weight_of_bags = array_sum($ list_of_bags);
我们可以使用多少个容器?</ h3>
$ number_of_containers = 4;
一个容器应该多少重量?
$ weight_per_container = $ weight_of_bags / $ number_of_containers;
我们为每个容器创建一个包含空数组的数组
$ containers [] = array();
$ total = 0;每个包
foreach($ list_of_bags as $ bag){ for($ i = 0; $ i
$total = (isset($containers[$i])) ? array_sum($containers[$i]) : 0; if($total + $bag < $weight_per_container){ $containers[$i][] = $bag; break; } } }
输出所有具有项目数和总重量的容器
foreach($ containers as $ index =&gt; $ container){
echo&#34;容器 $ index有&#34;;
回声计数($ container);
echo&#34; &#34 ;;
echo&#34; items and weigths:&#34 ;;
echo array_sum($ container);
echo&#34; &#34 ;; }
输出应如下:
容器0有3个项目和重量:83
容器1有3个项目和重量:96
容器2有2个项目和重量:87
容器3有2个项目和重量:76
容器4有2个项目和重量:47