import java.util.Random;
public class MyClass {
public static void printGrid(int[][] grid, int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
System.out.printf("%4d", grid[i][j]);
}
System.out.println();
}
}
public static int generateRandomInteger(int min, int max) {
return new Random().nextInt(max - min + 1) + min;
}
private static int[][] generateRandomInteger(int size) {
int[][] grid = new int[size][size];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
grid[i][j] = generateRandomInteger(1, 100);
}
}
return grid;
}
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;
}
}
}
System.out.print("\n" + n1 + " * " + n2 + " * " + n3 + " * " + n4 + " = ");
return max;
}
public static void main(String args[]) {
int[][] grid = generateRandomInteger(20);
printGrid(grid, 20);
System.out.print(FindMaxProduct(grid, 20));
}
}
/*
run:
16 15 13 53 52 100 28 46 51 90 33 60 97 9 92 74 30 1 93 75
61 16 29 9 44 29 8 34 45 62 98 9 12 53 11 58 60 85 31 24
54 14 29 43 65 35 15 8 47 47 88 7 93 66 88 99 97 92 51 97
82 39 65 77 52 16 11 88 60 50 22 31 15 13 31 74 54 91 36 21
46 86 77 36 13 29 78 30 6 80 97 67 54 60 40 98 34 61 74 33
18 88 83 39 15 9 56 8 34 25 22 33 10 95 95 95 62 84 9 92
65 98 43 48 4 15 87 13 41 32 22 67 91 62 2 46 27 71 46 75
69 51 76 47 79 52 75 55 50 26 85 21 78 7 55 93 4 86 7 91
63 56 91 56 74 52 24 37 71 90 79 88 67 82 99 54 70 93 48 91
73 86 99 84 91 37 49 4 26 59 83 34 39 19 78 97 13 18 67 66
54 6 8 84 51 69 55 54 87 40 5 96 76 94 37 27 7 50 69 9
60 41 12 82 74 45 48 68 73 3 42 63 41 44 99 17 25 31 89 71
67 77 20 79 78 32 79 15 32 14 12 82 100 94 73 98 40 49 73 1
39 93 94 37 40 1 32 92 89 74 81 11 33 58 39 99 56 79 10 42
2 55 70 82 8 10 25 31 92 21 42 45 69 49 95 12 83 41 81 87
9 30 90 71 7 80 76 9 53 88 89 65 78 75 15 88 41 69 59 3
32 33 8 49 8 56 33 26 33 15 74 33 80 23 14 8 40 69 55 36
34 48 20 5 2 30 28 6 82 3 41 40 22 83 25 77 34 13 11 14
29 12 31 59 74 22 60 41 94 94 19 65 15 81 93 48 16 42 88 94
75 78 27 32 2 37 66 53 27 14 55 22 82 32 70 72 7 68 98 45
88 * 99 * 97 * 92 = 77745888
*/