aleahim

FindMaxSequence

Jan 30th, 2013
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class FindMaxSeq
  5. {
  6.     static void Main()
  7.     {
  8.         List<string> inRow = new List<string>(); //ще проверява за повтарящи се елементи в дясно
  9.         List<string> inDiagonal = new List<string>(); //ще проверява за повтарящи се елементи в ляво
  10.         List<string> inColumn = new List<string>(); //ще проверява за повтарящи се елементи на долу
  11.         string element = null; //ще пази най-повтарящият се елемент
  12.         int result = 0; //ще пази бройката на най-повтарящищт се елемент
  13.  
  14.         string[,] matrix =
  15.         {
  16.             {"wow","aha","say"},
  17.             {"opa","sad","fff"},
  18.             {"aha","opa","off"},
  19.             {"hey","sad","opa"},
  20.             {"aha","ha", "aha"},
  21.         };
  22.         //matrix.GetLength(0)=5
  23.         //matrix.GetLength(1)=3
  24.  
  25.         //po redove
  26.         for (int i = 0; i < matrix.GetLength(0); i++)
  27.         {
  28.             inRow.Clear();
  29.             inRow.Add(matrix[i, 0]);
  30.  
  31.             for (int j = 0; j < matrix.GetLength(1) - 1; j++)
  32.             {
  33.                 if ( inRow[0] == matrix[i, j + 1])
  34.                 {
  35.                     inRow.Add(matrix[i, j+1]);
  36.                 }
  37.                 else
  38.                 {
  39.                     inRow.Clear();
  40.                     inRow.Add(matrix[i, j+1]);
  41.                 }
  42.             }
  43.             if (result < inRow.Count) //ако дължината на списъка е по-голяма от бройката на най-много повтаряния елемент
  44.             {
  45.                 result = inRow.Count; //приравняваме нова най-голяма бройка с дълижината
  46.                 element = inRow[0]; //запазваме елемента
  47.             }
  48.         }
  49.  
  50.         //po koloni
  51.         for (int j = 0; j < matrix.GetLength(1); j++)
  52.         {
  53.             inColumn.Clear();
  54.             inColumn.Add(matrix[0, j]);
  55.  
  56.             for (int i = 0; i < matrix.GetLength(0) - 1; i++)
  57.             {
  58.                 if (inColumn[0] == matrix[i+1,j])
  59.                 {
  60.                     inColumn.Add(matrix[i+1,j]);
  61.                 }
  62.                 else
  63.                 {
  64.                     inColumn.Clear();
  65.                     inColumn.Add(matrix[i+1,j]);
  66.                 }
  67.             }
  68.             if (result < inColumn.Count) //ако дължината на списъка е по-голяма от бройката на най-много повтаряния елемент
  69.             {
  70.                 result = inColumn.Count; //приравняваме нова най-голяма бройка с дълижината
  71.                 element = inColumn[0]; //запазваме елемента
  72.             }
  73.         }
  74.  
  75.         //diagonal
  76.         for (int i = 0; i < matrix.GetLength(0) - 1; i++) //почти аналогично тук има малка трудност, че трябва да обходим масива и за всеки елемент да проверим диагоналите, за това си правя дубликати на индексите на елементите с който да пускам проверка по диагонал
  77.         {
  78.             for (int j = 0; j < matrix.GetLength(1) - 1; j++)
  79.             {
  80.  
  81.                 inDiagonal.Clear();
  82.                 inDiagonal.Add(matrix[i, j]);
  83.                 int iChecker = i;
  84.                 int jChecker = j;
  85.  
  86.                 while (true)
  87.                 {
  88.                     if (((iChecker + 1) != matrix.GetLength(0)) && ((jChecker + 1) != matrix.GetLength(1)))
  89.                     {
  90.                         if ((matrix[iChecker, jChecker]) == matrix[iChecker + 1, jChecker + 1])
  91.                         {
  92.                             inDiagonal.Add(matrix[iChecker + 1, jChecker + 1]);
  93.                             if (result < inDiagonal.Count)
  94.                             {
  95.                                 result = inDiagonal.Count;
  96.                                 element = inDiagonal[0];
  97.                             }
  98.                             iChecker++;
  99.                             jChecker++;
  100.                         }
  101.                         else
  102.                         {
  103.                             inDiagonal.Clear();
  104.                             inDiagonal.Add(matrix[iChecker + 1, jChecker + 1]);
  105.                             iChecker++;
  106.                             jChecker++;
  107.                         }
  108.                     }
  109.                     else
  110.                     {
  111.                         break;
  112.                     }
  113.                 }
  114.             }
  115.         }
  116.  
  117.         Console.Write("{");
  118.         for (int i = 0; i < result; i++)
  119.         {
  120.             if (i < result - 1)
  121.             {
  122.                 Console.Write("{0}, ", element);
  123.             }
  124.             if (i == result - 1)
  125.             {
  126.                 Console.WriteLine(element + "}");
  127.             }
  128.         }
  129.     }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment