Advertisement
IrinaIgnatova

Maximum sum of 2x2 subMatrices

Oct 7th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.29 KB | None | 0 0
  1. package com.company;
  2.  
  3.  
  4. import java.io.IOException;
  5.  
  6.  
  7. import java.util.*;
  8.  
  9. public class Main {
  10.  
  11.  
  12.     public static void main(String[] args) {
  13.         Scanner scanner = new Scanner(System.in);
  14.  
  15.         int[] sizes = Arrays.stream(scanner.nextLine().split(", "))
  16.                 .mapToInt(Integer::parseInt)
  17.                 .toArray();
  18.  
  19.         int rows = sizes[0];
  20.         int cols = sizes[1];
  21.  
  22.         int[][] matrix = new int[rows][cols];
  23.  
  24.         int maxValue = Integer.MIN_VALUE;
  25.         int[][] maxMatrix = new int[2][2];
  26.  
  27.         for (int i = 0; i < rows; i++) {
  28.             matrix[i] = Arrays.stream(scanner.nextLine().split(", "))//прочитаме текущия евд от матрицата
  29.                     .mapToInt(Integer::parseInt)
  30.                     .toArray();
  31.         }
  32.         //правим си цикли за да обхождаме матрицата
  33.         for (int r = 0; r < matrix.length - 1; r++) {// обхождаме редовете
  34.             for (int c = 0; c < matrix[r].length - 1; c++) {//обхождаме колоните
  35.                 //намираме сумата на всяка подматрица 2х2:
  36.                 int current = matrix[r][c];
  37.                 int right = matrix[r][c + 1];
  38.                 int below = matrix[r + 1][c];
  39.                 int diagonal = matrix[r + 1][c + 1];
  40.  
  41.                 int sum = current + right + below + diagonal;//трябва някъде да си записваме сумата и за това правим променлива maxValue
  42.                 if (sum > maxValue) {
  43.                     maxValue = sum;
  44.                     //тук си записвам стойностите на maxMatrix
  45.                     maxMatrix[0][0] = current;
  46.                     maxMatrix[0][1] = right;
  47.                     maxMatrix[1][0] = below;
  48.                     maxMatrix[1][1] = diagonal;
  49.                 }
  50.  
  51.             }
  52.         }
  53.         for (int i = 0; i < 2; i++) {
  54.             for (int j = 0; j < 2; j++) {
  55.                 System.out.print(maxMatrix[i][j] + " ");
  56.             }
  57.             System.out.println();
  58.         }
  59.  
  60.         System.out.println(maxValue);//за да си запазим матриците 2х2 си правим променлива maxMatrix
  61.  
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement