Advertisement
Hey_Donny

Longest Surface

Jun 6th, 2022
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class LongestSurface {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6.  
  7. String[] input = scanner.nextLine().trim().split(" ");
  8.  
  9. int cols = Integer.parseInt(input[0]);
  10. int rows = Integer.parseInt(input[1]);
  11.  
  12. int[][] matrixOne = createMatrix(scanner, cols, rows);
  13.  
  14. System.out.println(findMaxAdjacentCount(matrixOne));
  15.  
  16. }
  17.  
  18. private static int[][] createMatrix(Scanner scanner, int cols, int rows) {
  19. int[][] matrix = new int[cols][rows];
  20. for (int i = 0; i < cols; i++) {
  21. for (int j = 0; j < rows; j++) {
  22. matrix[i][j] = scanner.nextInt();
  23. }
  24. }
  25. return matrix;
  26. }
  27.  
  28. public static int findMaxAdjacentCount(int[][] grid) {
  29. boolean[][] visited = createVisitGrid(grid);
  30. int result = 0;
  31.  
  32. for (int row = 0; row < grid.length; row++)
  33. for (int col = 0; col < grid[row].length; col++)
  34. if (!visited[row][col])
  35. result = Math.max(result, dfs(grid, visited, grid[row][col], row, col));
  36.  
  37. return result;
  38. }
  39.  
  40. private static int dfs(int[][] grid, boolean[][] visited, int expected, int row, int col) {
  41. if (row < 0 || row >= grid.length)
  42. return 0;
  43. if (col < 0 || col >= grid[row].length)
  44. return 0;
  45. if (visited[row][col] || grid[row][col] != expected)
  46. return 0;
  47.  
  48. visited[row][col] = true;
  49.  
  50. int depth = 1;
  51. depth += dfs(grid, visited, expected, row, col - 1);
  52. depth += dfs(grid, visited, expected, row, col + 1);
  53. depth += dfs(grid, visited, expected, row - 1, col);
  54. depth += dfs(grid, visited, expected, row + 1, col);
  55. return depth;
  56. }
  57.  
  58. private static boolean[][] createVisitGrid(int[][] grid) {
  59. boolean[][] visit = new boolean[grid.length][];
  60.  
  61. for (int row = 0; row < grid.length; row++)
  62. visit[row] = new boolean[grid[row].length];
  63.  
  64. return visit;
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement