/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 The product of these numbers is 26 × 63 × 78 × 14 = 1788696. What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid? */ package problem11; import java.util.Scanner; public class Problem11 { public static void main(String[] args) { int[][] matrix = new int[20][20]; try (Scanner scan = new Scanner(System.in)) { for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { matrix[i][j] = scan.nextInt(); } } scan.close(); } //Check correct input for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } //columns int maxSum = 0; for (int i = 0; i < 20; i++) { for (int j = 0; j < 17; j++) { int temp = 1; int k = j; for (int counter = 1; counter <= 4; counter++) { temp *= matrix[i][k]; k++; } maxSum = Math.max(maxSum, temp); } } //Rows for(int j = 0; j < 20; j++){ for(int i = 0; i < 17; i++){ int temp = 1; int k = i; for(int counter = 1; counter <= 4; counter++){ temp *= matrix[k][j]; k++; } maxSum = Math.max(maxSum, temp); } } //left diag for(int i = 0; i < 17; i++){ for(int j = 0; j < 17; j++){ int temp = 1; for(int counter = 0; counter < 4; counter++){ temp *= matrix[i+counter][j+counter]; } maxSum = Math.max(temp, maxSum); } } //right diag for(int i = 0; i < 17; i++){ for(int j = 3; j < 20; j++){ int temp = 1; for(int counter = 0; counter < 4; counter++){ temp *= matrix[i + counter][j - counter]; } maxSum = Math.max(temp, maxSum); } } System.out.println(maxSum); } }