Застрял с функцией PHP - PullRequest
0 голосов
/ 06 мая 2018

Вот мой код, который находит минимальный размер суммы подмассива:

 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».

Надеюсь, вы поняли идею заранее!

1 Ответ

0 голосов
/ 06 мая 2018

Боюсь, я не совсем понимаю, что делает код или что вы хотите сделать. Вам нужно поработать над объяснениями (например, «этот код печатает самую длинную последовательность простых чисел Мерсенна, найденных в массиве PHP» или что-то в этом роде).

Эту часть я получаю:

Где у меня $ маркер = [0,0,0,0,0,0]; Мне нужен кусок кода или функции, но фрагмент кода предпочтительнее, который может добавлять 0 (нули, разделенные ',', кроме последнего), и они должны быть равны длине $ arr.

Вы хотите

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

но это не zeroes separated with "," - это массив PHP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...