Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Temp
- {
- class Program
- {
- static int counter = 0;
- static int maxCounter = 0;
- static char bomb = 'b';
- static int currentNum = 0;
- static void Main(string[] args)
- {
- int output = LoadingTheMatrix();
- Console.WriteLine(output);
- }
- static int LoadingTheMatrix()
- {
- var parameters = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
- var row = parameters[0];
- var col = parameters[1];
- if (row < 3 || col > 1024)
- {
- throw new ArgumentOutOfRangeException("Rows and cols should be between following ranges >=3 && <= 1024!");
- }
- int[,] matrix = new int[row, col];
- for (int i = 0; i < row; i++) // to be added in Matrix loading method
- {
- var input = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
- for (int j = 0; j < col; j++)
- {
- matrix[i, j] = input[j];
- }
- }
- for (int i = row - 1; i >= 0; i--)
- {
- for (int j = col - 1; j >= 0; j--)
- {
- currentNum = matrix[i, j];
- FindLargestSurface(i, j, matrix);
- if (counter > maxCounter)
- {
- maxCounter = counter;
- }
- counter = 0;
- }
- }
- return maxCounter;
- }
- static void FindLargestSurface(int row, int col, int[,] matrix)
- {
- if ((row < 0) || (row >= matrix.GetLength(0)) ||
- (col < 0) || (col >= matrix.GetLength(1)) || matrix[row,col] == bomb)
- {
- return;
- }
- if (currentNum != matrix[row, col])
- {
- return;
- }
- matrix[row, col] = bomb;
- counter++;
- FindLargestSurface(row, col - 1, matrix); //left
- FindLargestSurface(row - 1, col, matrix); //up
- FindLargestSurface(row, col + 1, matrix); //rigth
- FindLargestSurface(row + 1, col, matrix); //down
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment