desislava_topuzakova

4. Maximal Sum

Jan 15th, 2024
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. package javaAdv;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class MaximalSum_04 {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9. int [] dimensions = Arrays.stream(scanner.nextLine().split(" "))
  10. .mapToInt(Integer::parseInt)
  11. .toArray(); //[4, 5]
  12. int rows = dimensions[0]; //брой редове
  13. int cols = dimensions[1]; //брой колони
  14.  
  15. int [][] matrix = new int[rows][cols];
  16.  
  17. //1. въвеждаме матрицата
  18. fillMatrix(matrix, scanner);
  19.  
  20. //2. намираме матрицата
  21. int maxSum = Integer.MIN_VALUE; //най-голямата сума
  22. int bestStartingRow = 0; //от кой ред започва най-добрата матрица
  23. int bestStartingColumn = 0; //от коя колона започва най-добрата матрица
  24.  
  25. for (int row = 0; row < rows - 2; row++) {
  26. for (int col = 0; col < cols - 2; col++) {
  27. int startElement = matrix[row][col]; //елемент, който може да образув матрица 3 х 3
  28. int sum = startElement + matrix[row][col + 1] + matrix[row][col + 2]
  29. + matrix[row + 1][col] + matrix[row + 2][col] + matrix[row + 1][col + 1]
  30. + matrix[row + 2][col + 2] + matrix[row + 2][col + 1] + matrix[row + 1][col + 2];
  31.  
  32. if (sum > maxSum) {
  33. maxSum = sum;
  34. bestStartingRow = row;
  35. bestStartingColumn = col;
  36. }
  37. }
  38. }
  39.  
  40. System.out.println("Sum = " + maxSum);
  41. for (int row = bestStartingRow; row <= bestStartingRow + 2 ; row++) {
  42. for (int col = bestStartingColumn; col <= bestStartingColumn + 2; col++) {
  43. System.out.print(matrix[row][col] + " ");
  44. }
  45. System.out.println();
  46. }
  47. }
  48.  
  49. private static void fillMatrix(int[][] matrix, Scanner scanner) {
  50. for (int row = 0; row < matrix.length; row++) {
  51. matrix[row] = Arrays.stream(scanner.nextLine()
  52. .split("\\s+"))
  53. .mapToInt(Integer::parseInt).toArray();
  54. }
  55. }
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment