Vladislav_Bezruk

LONGEST COMMON SUBSEQUENCE

Jul 9th, 2022
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. //task LONGEST COMMON SUBSEQUENCE
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int max(int a, int b)
  8. {
  9.     return a > b ? a : b;
  10. }
  11.  
  12. int main()
  13. {
  14.     int n_a, n_b;
  15.    
  16.     cin >> n_a >> n_b;
  17.    
  18.     int* a = new int[n_a];
  19.    
  20.     int* b = new int[n_b];
  21.    
  22.     for (int i = 0; i < n_a; i++)
  23.     {
  24.         cin >> a[i];
  25.     }
  26.    
  27.     for (int i = 0; i < n_b; i++)
  28.     {
  29.         cin >> b[i];
  30.     }
  31.    
  32.     int** m = new int*[n_a + 1];
  33.    
  34.     for (int i = 0; i <= n_a; i++)
  35.     {
  36.         m[i] = new int[n_b + 1];
  37.     }
  38.    
  39.     for (int i = 0; i <= n_a; i++)
  40.     {
  41.         m[i][0] = 0;
  42.     }
  43.    
  44.     for (int j = 0; j <= n_b; j++)
  45.     {
  46.         m[0][j] = 0;
  47.     }
  48.    
  49.     for (int i = 1; i <= n_a; i++)
  50.     {
  51.        
  52.         for (int j = 1; j <= n_b; j++)
  53.         {
  54.            
  55.             m[i][j] = max(m[i - 1][j], m[i][j - 1]);
  56.            
  57.             if (a[i - 1] == b[j - 1])
  58.             {
  59.                 m[i][j] = max(m[i][j], m[i - 1][j - 1] + 1);
  60.             }
  61.            
  62.         }
  63.        
  64.     }
  65.    
  66.     cout << m[n_a][n_b];
  67.    
  68.     return 0;
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment