Advertisement
nikitta_e

zad4a

Jan 9th, 2024 (edited)
738
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | Science | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int** createMatrix(int rows)
  5. {
  6.     int** mtx = new int* [rows];
  7.     for (int i = 0; i < rows; i++)
  8.     {
  9.         int colls;
  10.         cin >> colls;
  11.  
  12.         mtx[i] = new int[colls + 1] {0};
  13.         mtx[i][0] = colls;
  14.         for (int j = 1; j < colls + 1; j++)
  15.         {
  16.             cin >> mtx[i][j];
  17.         }
  18.     }
  19.     return mtx;
  20. }
  21.  
  22. void deleteMatrix(int** matrix, int rows)
  23. {
  24.     for (int i = 0; i < rows; i++)
  25.     {
  26.         delete[] matrix[i];
  27.     }
  28.     delete[] matrix;
  29.  
  30. }
  31.  
  32. void printMatrix(int** matrix, int rows)
  33. {
  34.  
  35.     for (int i = 0; i < rows; i++)
  36.     {
  37.         int sizeOfRow = matrix[i][0];
  38.         for (int j = 1; j < sizeOfRow + 1; j++)
  39.         {
  40.             cout << matrix[i][j] << " ";
  41.         }
  42.         cout << endl;
  43.     }
  44. }
  45.  
  46. int indi = 0, indj = 0, indiCopy, indjCopy;
  47. int findWay(int** matrix, int rows, int x, int y)
  48. {
  49.     int way=1,maxLen=1;
  50.  
  51.     for (int i = x - 1; i <= x + 1; i++)
  52.     {
  53.         if (i < 0 || i >= rows)
  54.         {
  55.             continue;
  56.         }
  57.  
  58.         for (int j = y - 1; j <= y + 1; j++)
  59.         {
  60.             if (j <1 || j > matrix[i][0])
  61.             {
  62.                 continue;
  63.             }
  64.  
  65.             if (matrix[i][j]  > matrix[x][y])
  66.             {
  67.                 way=1+findWay(matrix,rows,i,j);
  68.                 if(way>maxLen)maxLen=way;
  69.             }
  70.         }
  71.     }
  72.     return maxLen;
  73. }
  74.  
  75. unsigned int findLongestLine2(int** matrix, int rows)
  76. {
  77.     int maxi=0;
  78.     for (int i = 0; i < rows; i++)
  79.     {
  80.         int sizeOfRow = matrix[i][0];
  81.         for (int j = 1; j < sizeOfRow + 1; j++)
  82.         {
  83.             int br=findWay(matrix,rows,i,j);
  84.             if(br>maxi)maxi=br;
  85.         }
  86.     }
  87.     return maxi;
  88. }
  89.  
  90. int main()
  91. {
  92.     int rows;
  93.     cin >> rows;
  94.     int length = 1, maxLength = 0;
  95.     int** mtx = createMatrix(rows);
  96.     cout << findLongestLine2(mtx, rows, length, maxLength);
  97.  
  98.     deleteMatrix(mtx, rows);
  99.  
  100.     /*
  101.  
  102.     4
  103.     3 4 8 9
  104.     2 2 10
  105.     5 3 11 7 0 4
  106.     3 1 3 12
  107.  
  108.     output 7
  109.     */
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement