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

时间:2014-11-28 02:02:04

标签: php solution packing

请参阅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

0 个答案:

没有答案