using System;
public class Program
{
static int rows = 20;
static int columns = 20;
public static void PrintGrid(int[,] grid) {
for (int i = 0; i < grid.GetLength(0); i++) {
for (int j = 0; j < grid.GetLength(1); j++) {
Console.Write(grid[i, j].ToString().PadLeft(4) + " ");
}
Console.WriteLine();
}
}
private static int[,] generateRandomInteger(int size) {
Random random = new Random();
int[,] matrix = new int[rows, columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
matrix[i, j] = random.Next(1, 101);
}
}
return matrix;
}
static int FindMaxProduct(int[,] grid, int size) {
int max = 0, product;
int n1 = 0, n2 = 0, n3 = 0, n4 = 0;
for (int i = 0; i < size; i++) {
for (int 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 (int i = 0; i < size; i++) {
for (int 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 (int i = 0; i < size - 3; i++) {
for (int 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 (int i = 0; i < size - 3; i++) {
for (int 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;
}
}
}
Console.Write("\n" + n1 + " * " + n2 + " * " + n3 + " * " + n4 + " = ");
return max;
}
static void Main(string[] args)
{
int[,] grid = generateRandomInteger(20);
PrintGrid(grid);
Console.Write(FindMaxProduct(grid, 20));
}
}
/*
run:
89 20 74 48 18 20 54 81 29 66 50 6 55 17 3 14 4 96 78 92
18 93 65 95 100 89 40 45 90 54 44 75 94 84 43 8 95 1 3 48
62 34 57 87 56 56 72 11 85 6 70 25 52 100 72 96 55 80 49 29
81 10 91 75 22 75 13 71 75 96 19 4 94 31 31 84 37 79 40 44
17 29 61 84 85 19 24 94 13 47 53 16 52 74 67 52 43 82 65 81
44 2 37 89 87 66 32 21 70 88 60 77 41 5 12 52 49 8 91 3
52 19 58 28 44 4 52 20 64 79 41 55 15 59 1 16 93 72 97 19
87 3 25 25 87 76 76 48 62 16 3 36 92 62 30 25 44 9 46 84
14 12 57 91 48 5 63 82 4 97 60 78 12 72 16 49 95 34 41 68
29 5 59 49 77 6 64 53 30 77 73 84 27 13 6 75 47 34 78 82
14 94 45 66 56 26 25 20 46 82 30 10 68 78 56 10 54 9 15 42
42 10 53 28 25 76 51 99 67 41 3 61 57 60 54 35 61 94 93 51
82 44 7 48 48 63 17 49 58 96 22 39 20 36 41 5 42 17 42 81
76 26 54 6 79 69 54 9 25 21 50 61 16 64 60 98 4 5 80 62
60 2 41 72 20 65 42 21 19 50 94 44 52 13 76 56 91 2 70 79
9 8 25 38 46 61 23 57 77 43 2 37 38 80 21 74 86 83 86 15
28 34 90 75 28 7 9 3 89 5 7 2 36 2 53 52 77 3 26 59
42 85 45 77 48 57 7 73 92 2 71 9 16 55 52 76 19 50 11 40
52 21 68 73 37 100 1 36 27 70 98 83 57 27 74 43 90 14 27 71
1 36 12 88 34 98 86 82 51 78 34 27 93 86 8 22 18 72 40 49
93 * 65 * 95 * 100 = 57427500
*/