Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- class FindMaxSeq
- {
- static void Main()
- {
- List<string> inRow = new List<string>(); //ще проверява за повтарящи се елементи в дясно
- List<string> inDiagonal = new List<string>(); //ще проверява за повтарящи се елементи в ляво
- List<string> inColumn = new List<string>(); //ще проверява за повтарящи се елементи на долу
- string element = null; //ще пази най-повтарящият се елемент
- int result = 0; //ще пази бройката на най-повтарящищт се елемент
- string[,] matrix =
- {
- {"wow","aha","say"},
- {"opa","sad","fff"},
- {"aha","opa","off"},
- {"hey","sad","opa"},
- {"aha","ha", "aha"},
- };
- //matrix.GetLength(0)=5
- //matrix.GetLength(1)=3
- //po redove
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- inRow.Clear();
- inRow.Add(matrix[i, 0]);
- for (int j = 0; j < matrix.GetLength(1) - 1; j++)
- {
- if ( inRow[0] == matrix[i, j + 1])
- {
- inRow.Add(matrix[i, j+1]);
- }
- else
- {
- inRow.Clear();
- inRow.Add(matrix[i, j+1]);
- }
- }
- if (result < inRow.Count) //ако дължината на списъка е по-голяма от бройката на най-много повтаряния елемент
- {
- result = inRow.Count; //приравняваме нова най-голяма бройка с дълижината
- element = inRow[0]; //запазваме елемента
- }
- }
- //po koloni
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- inColumn.Clear();
- inColumn.Add(matrix[0, j]);
- for (int i = 0; i < matrix.GetLength(0) - 1; i++)
- {
- if (inColumn[0] == matrix[i+1,j])
- {
- inColumn.Add(matrix[i+1,j]);
- }
- else
- {
- inColumn.Clear();
- inColumn.Add(matrix[i+1,j]);
- }
- }
- if (result < inColumn.Count) //ако дължината на списъка е по-голяма от бройката на най-много повтаряния елемент
- {
- result = inColumn.Count; //приравняваме нова най-голяма бройка с дълижината
- element = inColumn[0]; //запазваме елемента
- }
- }
- //diagonal
- for (int i = 0; i < matrix.GetLength(0) - 1; i++) //почти аналогично тук има малка трудност, че трябва да обходим масива и за всеки елемент да проверим диагоналите, за това си правя дубликати на индексите на елементите с който да пускам проверка по диагонал
- {
- for (int j = 0; j < matrix.GetLength(1) - 1; j++)
- {
- inDiagonal.Clear();
- inDiagonal.Add(matrix[i, j]);
- int iChecker = i;
- int jChecker = j;
- while (true)
- {
- if (((iChecker + 1) != matrix.GetLength(0)) && ((jChecker + 1) != matrix.GetLength(1)))
- {
- if ((matrix[iChecker, jChecker]) == matrix[iChecker + 1, jChecker + 1])
- {
- inDiagonal.Add(matrix[iChecker + 1, jChecker + 1]);
- if (result < inDiagonal.Count)
- {
- result = inDiagonal.Count;
- element = inDiagonal[0];
- }
- iChecker++;
- jChecker++;
- }
- else
- {
- inDiagonal.Clear();
- inDiagonal.Add(matrix[iChecker + 1, jChecker + 1]);
- iChecker++;
- jChecker++;
- }
- }
- else
- {
- break;
- }
- }
- }
- }
- Console.Write("{");
- for (int i = 0; i < result; i++)
- {
- if (i < result - 1)
- {
- Console.Write("{0}, ", element);
- }
- if (i == result - 1)
- {
- Console.WriteLine(element + "}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment