Advertisement
IrinaIgnatova

Matrix Wrong measurements

Oct 8th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.80 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 row = Integer.parseInt(scanner.nextLine());
  16.         int[][] matrix = new int[row][];
  17.         for (int i = 0; i < row; i++) {
  18.             matrix[i] = Arrays.stream(scanner.nextLine().split(" "))
  19.                     .mapToInt(Integer::parseInt)
  20.                     .toArray();
  21.         }
  22.  
  23.         int r = scanner.nextInt();
  24.         int c = scanner.nextInt();
  25.  
  26.         int wrongValue = matrix[r][c];
  27.  
  28.         ArrayList<Integer> values = new ArrayList<>();//тук си пазим стойностите ValidValues
  29.         ArrayList<int[]> indexes = new ArrayList<>();  // и техните индекси
  30.  
  31.         //за да намерим всички стойности трябва да обходим матрицата:
  32.         for (int i = 0; i < matrix.length; i++) {
  33.             for (int j = 0; j < matrix[i].length; j++) {
  34.                 if (matrix[i][j] == wrongValue) {
  35.                     int validValue = getValidValue(matrix, i, j, wrongValue);
  36.  
  37.                     values.add(validValue);
  38.                     indexes.add(new int[]{i, j});
  39.                 }
  40.             }
  41.         }
  42.         for (int i = 0; i < values.size(); i++) {//тук си изцикляме lista
  43.             matrix[indexes.get(i)[0]][indexes.get(i)[1]] = values.get(i);
  44.         }
  45.         for (int i = 0; i < matrix.length; i++) {
  46.             for (int j = 0; j < matrix[i].length; j++) {
  47.                 System.out.print(matrix[i][j] + " ");
  48.             }
  49.             System.out.println();//след всеки ред на матрицата отиваме на нов ред
  50.         }
  51.  
  52.     }
  53.  
  54.     private static int getValidValue(int[][] matrix, int row, int col, int wrongValue) {
  55.         int sum = 0;
  56.  
  57.         if (isInBounds(row + 1, col, matrix) && matrix[row + 1][col] != wrongValue) {
  58.             sum += matrix[row + 1][col];
  59.         }
  60.         if (isInBounds(row - 1, col, matrix) && matrix[row - 1][col] != wrongValue) {
  61.             sum += matrix[row - 1][col];
  62.         }
  63.         if (isInBounds(row, col + 1, matrix) && matrix[row][col + 1] != wrongValue) {
  64.             sum += matrix[row][col + 1];
  65.         }
  66.         if (isInBounds(row, col - 1, matrix) && matrix[row][col - 1] != wrongValue) {
  67.             sum += matrix[row][col - 1];
  68.         }
  69.  
  70.  
  71.         return sum;
  72.     }
  73.  
  74.  
  75.     //правим си метод за да проверим дали стойността която искаме да достъпим е валидна
  76.     private static boolean isInBounds(int r, int c, int[][] matrix) {
  77.         return r >= 0 && r < matrix.length && c >= 0 && c < matrix[r].length;
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement