Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _04.Sequence_in_Matrix
- {
- class SequenceInMatrix
- {
- static void Main(string[] args)
- {
- int rows = int.Parse(Console.ReadLine());
- int colls = int.Parse(Console.ReadLine());
- string[,] matrix = new string[rows, colls];
- for (int i = 0; i < rows; i++) //fill matrix
- {
- for (int j = 0; j < colls; j++)
- {
- matrix[i, j] = Console.ReadLine();
- }
- }
- int maxCount = int.MinValue;
- string bestSequence = "";
- for (int i = 0; i < matrix.GetLength(0); i++) //обхождаме матрицата
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- string temp = matrix[i, j]; // temp, ще е началната клетка = 00
- int countH = 1; //брояч за хоризонталата
- int countV = 1; //брояч за вертикалата
- int countD = 1; //брояч за диагонала
- int maxString, minString; //тези променливи са ни нужни за да направим
- //матрицата квадратна, за да обходим диагонала
- if (matrix.GetLength(0) > matrix.GetLength(1)) //проверяваме и запазваме в макс и мин по-дългата
- { //и по късата страни на матрицата
- maxString = matrix.GetLength(0);
- minString = matrix.GetLength(1);
- }
- else
- {
- maxString = matrix.GetLength(1);
- minString = matrix.GetLength(0);
- }
- for (int k = 0; k < maxString; k++) // Access matrix by lines, colls, diagonals
- { //к=0ят елемент от масива и ще стига до дългата страна на матрицата
- if (i + k < maxString) //ако i, т.е. редът + 0 елемент са < от дължината на матрицата
- {
- string tempV = matrix[i + k, j]; //tempV = по вертикала при ред = 0
- if (tempV == temp) //ако съвпадат
- {
- countV++; //брояча на вертикалата се увеличава с едно
- }
- }
- if (j + k < matrix.GetLength(1))
- {
- string tempH = matrix[i, j + k];
- if (tempH == temp)
- {
- countH++;
- }
- }
- if (i + k < minString)
- {
- string tempD = matrix[i++, j++];
- if (tempD == temp)
- {
- countD++;
- }
- }
- }
- if (countH > maxCount || countV > maxCount || countD > maxCount)//при което и да е от тях
- {
- bestSequence = temp; //bestSequence става равен на най дългия изброен temp
- }
- if (countH > maxCount) //проверка кой е най-големия maxCount
- {
- maxCount = countH;
- }
- if (countV > maxCount)
- {
- maxCount = countV;
- }
- if (countD > maxCount)
- {
- maxCount = countD;
- }
- }
- }
- for (int a = 0; a < maxCount; a++) //принтираме
- {
- Console.Write("{0}, ", bestSequence);
- }
- Console.WriteLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement