function printGrid($grid, $size) {
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size; $j++) {
printf("%4d", $grid[$i][$j]);
}
echo "\n";
}
}
function generateRandomMatrix($size) {
$grid = array_fill(0, $size, array_fill(0, $size, 0));
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size; $j++) {
$grid[$i][$j] = rand(1, 100);
}
}
return $grid;
}
function FindMaxProduct($grid, $size) {
$max = 0; $product = 0;
$n1 = 0; $n2 = 0; $n3 = 0; $n4 = 0;
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size - 3; $j++) {
$product = $grid[$i][$j] * $grid[$i][$j + 1] * $grid[$i][$j + 2] * $grid[$i][$j + 3];
if ($product > $max) {
$n1 = $grid[$i][$j]; $n2 = $grid[$i][$j + 1]; $n3 = $grid[$i][$j + 2]; $n4 = $grid[$i][$j + 3];
$max = $product;
}
}
}
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size - 3; $j++) {
$product = $grid[$j][$i] * $grid[$j + 1][$i] * $grid[$j + 2][$i] * $grid[$j + 3][$i];
if ($product > $max) {
$n1 = $grid[$i][$j]; $n2 = $grid[$j + 1][$i]; $n3 = $grid[$j + 2][$i]; $n4 = $grid[$j + 2][$i];
$max = $product;
}
}
}
for ($i = 0; $i < $size - 3; $i++) {
for ($j = 0; $j < $size - 3; $j++) {
$product = $grid[$j][$i] * $grid[$j + 1][$i + 1] * $grid[$j + 2][$i + 2] * $grid[$j + 3][$i + 3];
if ($product > $max) {
$n1 = $grid[$j][$i]; $n2 = $grid[$j + 1][$i + 1]; $n3 = $grid[$j + 2][$i + 2]; $n4 = $grid[$j + 3][$i + 3];
$max = $product;
}
}
}
for ($i = 0; $i < $size - 3; $i++) {
for ($j = 3; $j < $size; $j++) {
$product = $grid[$j][$i] * $grid[$j - 1][$i + 1] * $grid[$j - 2][$i + 2] * $grid[$j - 3][$i + 3];
if ($product > $max) {
$n1 = $grid[$j][$i]; $n2 = $grid[$j - 1][$i + 1]; $n3 = $grid[$j - 2][$i + 2]; $n4 = $grid[$j - 3][$i + 3];
$max = $product;
}
}
}
echo "\n" . $n1 . " * " . $n2 . " * " . $n3 . " * " . $n4 . " = ";
return $max;
}
$grid = generateRandomMatrix(20);
printGrid($grid, 20);
echo FindMaxProduct($grid, 20);
/*
run:
35 47 100 43 11 58 60 86 96 74 43 92 99 62 93 28 69 48 40 38
49 45 3 13 52 50 49 85 73 70 75 84 100 1 64 66 96 67 47 52
14 90 40 26 65 66 30 98 57 17 99 26 8 53 72 25 81 86 33 83
7 25 17 77 56 30 81 4 48 19 18 100 88 68 67 98 66 50 50 79
56 74 87 58 48 31 49 15 63 46 100 50 15 60 19 66 38 74 10 73
42 39 35 16 65 31 21 35 78 77 54 91 85 31 41 51 58 70 48 91
81 14 44 69 9 94 26 72 71 15 51 85 28 6 5 9 90 73 34 49
39 92 60 62 71 60 17 39 10 50 46 56 24 29 73 56 27 75 72 56
52 74 54 89 4 45 8 13 52 20 96 38 57 87 47 70 77 66 79 35
11 27 94 40 99 37 88 35 20 76 40 71 70 10 47 59 53 36 49 2
44 59 45 59 81 92 22 78 56 33 42 32 93 68 46 73 16 23 22 92
95 50 77 42 42 41 74 48 72 5 97 85 20 24 51 6 96 20 18 30
40 92 47 87 86 60 7 47 15 94 66 61 38 47 32 47 50 57 62 46
92 4 98 58 27 19 19 97 15 52 84 98 27 58 47 15 56 11 81 23
85 44 25 94 36 96 8 89 70 34 54 5 66 30 98 90 38 33 10 63
91 57 20 40 78 8 90 96 16 29 81 52 52 65 89 39 80 92 65 39
69 38 85 2 34 50 58 8 16 23 13 62 10 27 41 2 10 3 70 26
89 87 35 96 92 64 72 35 70 35 90 72 11 24 87 35 89 62 72 73
41 34 19 44 87 61 83 34 98 62 20 94 68 92 26 62 89 65 14 57
50 15 93 50 94 88 67 16 24 74 46 30 47 65 89 19 32 78 26 27
95 * 92 * 98 * 94 = 80512880
*/