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(8);
printGrid(grid, 8);
System.out.print(FindMaxProduct(grid, 8));
}
}
/*
run:
99 73 28 83 53 67 66 1
10 79 24 14 36 26 21 95
53 2 54 68 87 99 26 5
62 63 3 52 71 50 76 87
22 94 16 53 5 2 62 76
15 15 100 61 73 3 88 23
94 8 77 51 47 75 76 41
75 81 47 7 56 17 2 45
100 * 53 * 71 * 99 = 37253700
*/