Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace Largest_Area_in_Matrix
  5. {
  6. class Program
  7. {
  8. static int[,] matrix;
  9. static bool[,] visited;
  10.  
  11. static void Main()
  12. {
  13. var sizes = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  14. matrix = new int[sizes[0], sizes[1]];
  15. visited = new bool[sizes[0], sizes[1]];
  16.  
  17. for (int row = 0; row < sizes[0]; row++)
  18. {
  19. var input = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  20.  
  21. for (int col = 0; col < sizes[1]; col++)
  22. {
  23. matrix[row, col] = input[col];
  24. }
  25. }
  26. Console.WriteLine(FindMaxArea());
  27. }
  28.  
  29. static int FindMaxArea()
  30. {
  31. int maxArea = 0;
  32.  
  33. for (int row = 0; row < matrix.GetLength(0); row++)
  34. {
  35. for (int col = 0; col < matrix.GetLength(1); col++)
  36. {
  37. maxArea = Math.Max(maxArea, FindMaxArea(row, col, matrix[row, col]));
  38. }
  39. }
  40. return maxArea;
  41. }
  42.  
  43. static int FindMaxArea(int row, int col, int value)
  44. {
  45. if (row < 0 || col < 0 || row >= matrix.GetLength(0) || col >= matrix.GetLength(1))
  46. {
  47. return 0;
  48. }
  49. if (visited[row, col])
  50. {
  51. return 0;
  52. }
  53. if (matrix[row, col] != value)
  54. {
  55. return 0;
  56. }
  57. visited[row, col] = true;
  58. return FindMaxArea(row, col + 1, value) + FindMaxArea(row, col - 1, value) +
  59. FindMaxArea(row + 1, col, value) + FindMaxArea(row - 1, col, value) + 1;
  60. }
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement