Вот мой код, который находит минимальный размер суммы подмассива:
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");
}
Я борюсь с двумя вещами здесь, я надеюсь, что вы можете мне помочь
Где у меня есть $marker = [0,0,0,0,0,0];
Мне нужен кусок кода или функции, но предпочтительнее кусок кода, который может добавить 0 (нули, разделенные ',', кроме последнего), и они должны быть равны длине $arr
.
Я могу пометить соответствующие элементы данного массива только «1», остальные помечены «0», но на самом деле мне нужно вывести помеченные элементы «1», если вы запустите код, который увидите эти выходные данные: «0 0 0 0 1 1 Len: 2», но мне нужно это как: «4,3 Len: 2».
Надеюсь, вы поняли идею заранее!