<?php
//функция по подсчету максимальное количества значени 1
function fill($arr, $i, $j, $n) {
if ($i < 0 || $i >= $n || $j < 0 || $j >= $m) {
return 0;
}elseif($arr[$i][$j] === 1)
{
$arr[$i][$j] = 0;
return 1 + fill($arr, $i-1, $j-1, $n)
+ fill($arr, $i-1, $j, $n)
+ fill($arr, $i-1, $j+1, $n)
+ fill($arr, $i, $j-1, $n)
+ fill($arr, $i, $j+1, $n)
+ fill($arr, $i+1, $j-1, $n)
+ fill($arr, $i+1, $j, $n)
+ fill($arr, $i+1, $j+1, $n);
}
return 0;
}
//Создание матрицы
$n = 3;
$arr = [];
for ($a=0; $a <= $n; $a++)
{
{
for ($b=0; $b <= $n; $b++)
if($b == $n){
echo $arr[$a][$b] = rand(0, 1);
echo "<br>";
}else{
echo $arr[$a][$b] = rand(0, 1).''.' ';
}
}
}
//Вызов функции
$chck = 0;
$rslt = 0;
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n; $j++) {
$chck = fill($arr, $i, $j, $n);
$rslt = ($chck > $rslt) ? $chck : $rslt;
}
}
echo $rslt;
{}
, но есть нюанс. А тут получается, что сразу за внутренним for
идёт if/else
, поэтому код работает. По лезвию ножа. for ($i = 0; $i < 3; $i++);
for ($i = 0; $i < 3; $i++) print("$i\n");
for ($i = 0; $i < 3; $i++) { $j = $i; print("$j\n"); }
// но можно и простое в рога взять
for ($i = 0; $i < 3; $i++) { print("$i\n"); }
The body of each structure MUST be enclosed by braces. This standardizes how the structures look, and reduces the likelihood of introducing errors as new lines get added to the body.
echo ($arr[$a][$b] = rand(0, 1)) . '' . ' ';
.''
(полезна следующая конкатенация, где пробел добавляется).function fill($arr, $i, $j, $n) {
if ($i < 0 || $i >= $n || $j < 0 || $j >= $n) {
return 0;
}
if($arr[$i][$j] === 1){
$arr[$i][$j] = 0;
return 1 + fill($arr, $i-1, $j-1, $n)
+ fill($arr, $i-1, $j, $n)
+ fill($arr, $i-1, $j+1, $n)
+ fill($arr, $i, $j-1, $n)
+ fill($arr, $i, $j+1, $n)
+ fill($arr, $i+1, $j-1, $n)
+ fill($arr, $i+1, $j, $n)
+ fill($arr, $i+1, $j+1, $n);
}
if($arr[$i][$j] === 0) {
return 0;
}
}
$arr = [
[1, 1, 0, 0],
[0, 1, 1, 0,],
[0, 0, 0, 0,],
[1, 0, 1, 1,],
];
$chck = 0;
$result = 0;
$n = 3;
for ($i = 0; $i <= $n; $i++) {
for ($j = 0; $j <= $n; $j++) {
$chck = fill($arr, $i, $j, $n);
$result = ($chck > $result) ? $chck : $result;
}
}
echo $result;
function fill(&$arr, $i, $j, $n)
.($i < 0 || $i > $n || $j < 0 || $j > $n)