被困在一个PHP功能

时间:2018-05-05 21:17:05

标签: php arrays algorithm function

这是我的代码,找到子阵列总和的最小尺寸:

 function printArray($arr) {
            for ($i=0; $i<count($arr); $i++) {
               echo ($arr[$i].' ');
            }
            echo ("\n");
        }       

       $arr = [2,3,1,2,4,3];
       $bestlength = count($arr)+1;
       $k = 7;

       for ($i=0; $i<count($arr); $i++) {
           $marker = [0,0,0,0,0,0];
           $marker[$i]=1;

           $sum = $arr[$i];
           if ($sum >= $k) {
               $bestlength = 1;
               printArray($marker);
               echo("Len: $bestlength");
              exit(0);
           }
           for ($j=$i+1; $j<count($arr); $j++) {
              $sum += $arr[$j];
              $marker[$j]=1;
                if ($sum >= $k) {
                    $curlength = $j-$i+1;
                    if ($curlength < $bestlength) {
                        $bestlength = $curlength;
                        $bestmarker = $marker;
                    }
                }
           }
       }

       if ($bestlength == count($arr)+1) {
           echo "No solution";
       } else {
           printArray($bestmarker);
           echo("Len: $bestlength");
       }

我在这里遇到两件事我希望你能帮助我

  1. 我有$marker = [0,0,0,0,0,0];我需要一段代码或函数但是首选的代码段可以添加0(除了最后一个之外用','分隔的零)并且它们必须是相同的数量长度为$arr

  2. 我只能将给定数组的相应项标记为“1”,其他标记为“0”,但实际上我需要输出带有“1”项的标记项,如果你运行代码,你会看到这个输出:“0 0 0 0 1 1 Len:2”但我需要它:“4,3 Len:2”。

  3. 我希望你事先得到这个想法!

1 个答案:

答案 0 :(得分:0)

我恐怕不能完全理解代码的作用或你想做的事情。你需要处理你的解释(例如&#34;这段代码打印出PHP数组中发现的最长的Mersenne素数序列&#34;或者那样的东西)。

这部分我得到:

  

我有$ marker = [0,0,0,0,0,0];我需要一段代码或函数,但首选代码片段可以添加0(除了最后一个之外用&#39;,&#39;分隔的零),它们必须与$ arr的长度相同。

你想要

$marker = array_fill(0, count($arr), 0);

但那不是zeroes separated with "," - 这是 PHP数组