Advertisement
stanevplamen

02.2.7.NeighborElements

May 26th, 2013
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.47 KB | None | 0 0
  1. using System;
  2.  
  3. class LargestAreaNeighborElements
  4. {
  5.     static int member = 0;
  6.     static int counter = 0;
  7.     static int currentNumber = 0;
  8.     static int[,] lab =
  9.     {
  10.         {1, 3, 3, 2, 3, 1, 3},
  11.         {2, 2, 2, 2, 2, 2, 2},
  12.         {3, 3, 3, 2, 3, 3, 1},
  13.         {1, 2, 2, 2, 2, 2, 3},
  14.         {3, 1, 3, 1, 3, 1, 1},
  15.     };
  16.  
  17.     static void FindExit(int row, int col)
  18.     {
  19.         if ((col < 0) || (row < 0) || (col >= lab.GetLength(1)) || (row >= lab.GetLength(0)))
  20.         {
  21.             // we are out of the matrix, we can't find a sum
  22.             return;
  23.         }
  24.  
  25.         if (lab[row, col] == 0)
  26.         {
  27.             // the current cell is zero, we are not searching a sum
  28.             return;
  29.         }
  30.         currentNumber = lab[row, col];
  31.         // mark the current cell as visited
  32.         lab[row, col] = 0;
  33.         // recursion to explore all possible directions
  34.         if (col - 1 >= 0 && lab[row, col - 1] == currentNumber)
  35.         {
  36.             FindExit(row, col - 1); // left
  37.         }
  38.         if (row - 1 >= 0 && lab[row - 1, col] == currentNumber)
  39.         {
  40.             FindExit(row - 1, col); // up
  41.         }
  42.         if (col + 1 < lab.GetLength(1) && lab[row, col + 1] == currentNumber)
  43.         {
  44.             FindExit(row, col + 1); // right
  45.         }
  46.         if (row + 1 < lab.GetLength(0) && lab[row + 1, col] == currentNumber)
  47.         {
  48.             FindExit(row + 1, col); // down
  49.         }
  50.  
  51.         counter++;
  52.         return;
  53.     }
  54.  
  55.     static void Main()
  56.     {
  57.         int finalCount = 0;
  58.         int maxSeqMember = 0;
  59.  
  60.         for (int row = 0; row < lab.GetLength(0); row++)
  61.         {
  62.             for (int col = 0; col < lab.GetLength(1); col++)
  63.             {
  64.                 if (lab[row, col] != 0)
  65.                 {
  66.                     counter = 0;
  67.                     member = lab[row, col];
  68.                     bool checker = false;
  69.                     FindExit(row, col);
  70.                     if (finalCount < counter)
  71.                     {
  72.                         finalCount = counter;
  73.                         checker = true;
  74.                         if (checker == true)
  75.                         {
  76.                             maxSeqMember = member;
  77.                         }
  78.                     }
  79.                 }
  80.             }
  81.         }
  82.         Console.WriteLine("The largest area of equal neighbor elements is {0}", finalCount);
  83.         Console.WriteLine("The elements value is {0}", maxSeqMember);
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement