RGAlex

O4. Maximal Sum

May 27th, 2021 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class MaximalSum {
  4.  
  5.     public static void main(String[] args) {
  6.  
  7.         Scanner scan = new Scanner(System.in);
  8.  
  9.         int[][] matrix = readMatrix(scan);
  10.         int maxSum = Integer.MIN_VALUE,maxRow = 0,maxCol = 0;
  11.  
  12.         for (int row = 0; row < matrix.length - 2; row++) {
  13.             for (int col = 0; col < matrix[row].length - 2; col++) {
  14.                 int sum = subMatrixSum(matrix, row, col);
  15.                 if (sum > maxSum) {
  16.                     maxSum = sum;
  17.                     maxRow = row;
  18.                     maxCol = col;
  19.                 }
  20.             }
  21.         }
  22.         System.out.printf("Sum = %d%n", maxSum);
  23.         printSubMatrix(matrix,maxRow,maxCol);
  24.  
  25.     }
  26.  
  27.     private static int subMatrixSum(int[][] matrix, int row, int col) {
  28.         int sum = 0;
  29.         for (int rows = row; rows < row + 3; rows++) {
  30.             for (int cols = col; cols < col + 3; cols++) {
  31.                 sum += matrix[rows][cols];
  32.             }
  33.         }
  34.         return sum;
  35.     }
  36.  
  37.     private static int[][] readMatrix(Scanner scan) {
  38.         int[] size = readArray(scan);
  39.         int rows = size[0],cols = size[1];
  40.         int[][] matrix = new int[rows][cols];
  41.         for (int row = 0; row < rows; row++) {
  42.             matrix[row] = readArray(scan);
  43.         }
  44.         return matrix;
  45.     }
  46.  
  47.     private static int[] readArray(Scanner scan) {
  48.         return Arrays.stream(scan.nextLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
  49.     }
  50.  
  51.     private static void printSubMatrix(int[][] matrix, int row, int col) {
  52.         for (int rows = row; rows < row+ 3; rows++) {
  53.             for (int cols = col; cols < col+ 3; cols++) {
  54.                 System.out.print(matrix[rows][cols] + " ");
  55.             }
  56.             System.out.println();
  57.         }
  58.     }
  59. }
Add Comment
Please, Sign In to add comment