Advertisement
tutzy

Problem 4. Sequence in Matrix

May 18th, 2015
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.07 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _04.Sequence_in_Matrix
  8. {
  9.     class SequenceInMatrix
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int rows = int.Parse(Console.ReadLine());
  14.             int colls = int.Parse(Console.ReadLine());
  15.             string[,] matrix = new string[rows, colls];
  16.             for (int i = 0; i < rows; i++)                                 //fill matrix
  17.             {
  18.                 for (int j = 0; j < colls; j++)
  19.                 {
  20.                     matrix[i, j] = Console.ReadLine();
  21.                 }
  22.             }
  23.             int maxCount = int.MinValue;                          
  24.             string bestSequence = "";
  25.             for (int i = 0; i < matrix.GetLength(0); i++)               //обхождаме матрицата
  26.             {
  27.                 for (int j = 0; j < matrix.GetLength(1); j++)
  28.                 {
  29.                     string temp = matrix[i, j];                         // temp, ще е началната клетка = 00
  30.                     int countH = 1;                                     //брояч за хоризонталата    
  31.                     int countV = 1;                                     //брояч за вертикалата                      
  32.                     int countD = 1;                                     //брояч за диагонала
  33.                     int maxString, minString;                           //тези променливи са ни нужни за да направим
  34.                                                                         //матрицата квадратна, за да обходим диагонала
  35.                     if (matrix.GetLength(0) > matrix.GetLength(1))      //проверяваме и запазваме в макс и мин по-дългата
  36.                     {                                                   //и по късата страни на матрицата
  37.                         maxString = matrix.GetLength(0);
  38.                         minString = matrix.GetLength(1);
  39.                     }
  40.                     else
  41.                     {
  42.                         maxString = matrix.GetLength(1);
  43.                         minString = matrix.GetLength(0);
  44.                     }
  45.                     for (int k = 0; k < maxString; k++)                // Access matrix by lines, colls, diagonals
  46.                     {                                                 //к=0ят елемент от масива и ще стига до дългата страна на матрицата
  47.                         if (i + k < maxString)              //ако i, т.е. редът + 0 елемент са < от дължината на матрицата
  48.                         {
  49.                             string tempV = matrix[i + k, j];          //tempV = по вертикала при ред = 0
  50.                             if (tempV == temp)                       //ако съвпадат
  51.                             {
  52.                                 countV++;                            //брояча на вертикалата се увеличава с едно
  53.                             }
  54.                         }
  55.                         if (j + k < matrix.GetLength(1))
  56.                         {
  57.                             string tempH = matrix[i, j + k];
  58.                             if (tempH == temp)
  59.                             {
  60.                                 countH++;
  61.                             }
  62.                         }
  63.                         if (i + k < minString)            
  64.                         {
  65.                             string tempD = matrix[i++, j++];
  66.                             if (tempD == temp)
  67.                             {
  68.                                 countD++;
  69.                             }
  70.                         }
  71.                     }
  72.                     if (countH > maxCount || countV > maxCount || countD > maxCount)//при което и да е от тях
  73.                     {
  74.                         bestSequence = temp;                                        //bestSequence става равен на най дългия изброен temp
  75.                     }
  76.                     if (countH > maxCount)                                          //проверка кой е най-големия maxCount
  77.                     {
  78.                         maxCount = countH;
  79.                     }
  80.                     if (countV > maxCount)
  81.                     {
  82.                         maxCount = countV;
  83.                     }
  84.                     if (countD > maxCount)
  85.                     {
  86.                         maxCount = countD;
  87.                     }
  88.                 }
  89.             }
  90.             for (int a = 0; a < maxCount; a++)                                      //принтираме
  91.             {
  92.                 Console.Write("{0}, ", bestSequence);
  93.             }
  94.             Console.WriteLine();
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement