Advertisement
Derga

Untitled

Feb 26th, 2023
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. std::size_t longest_common_subseq(const std::string& seq1, const std::string& seq2) {
  6.   //std::vector<std::vector<int>> dp(seq1.size() + 1, std::vector<int>(seq2.size() + 1, 0));
  7.   const int ROWS_COUNT = 2;
  8.   std::vector<std::vector<int>> dp(ROWS_COUNT, std::vector<int>(seq2.size() + 1, 0));
  9.   for (int i = 0; i < seq1.size(); ++i) {
  10.     for (int j = 0; j < seq2.size(); ++j) {
  11.       if (seq1[i] == seq2[j]) {
  12.         //dp[i + 1][j + 1] = dp[i][j] + 1;
  13.         dp[(i + 1) % 2][j + 1] = dp[i % 2][j] + 1;
  14.       } else {
  15.         //dp[i + 1][j + 1] = std::max(dp[i + 1][j], dp[i][j + 1]);
  16.         dp[(i + 1) % 2][j + 1] = std::max(dp[(i + 1) % 2][j], dp[i % 2][j + 1]);
  17.       }
  18.     }
  19.   }
  20.  
  21.   //return dp[seq1.size()][seq2.size()];
  22.   return dp[seq1.size() % 2][seq2.size()];
  23. }
  24.  
  25. int main() {
  26.   std::ios_base::sync_with_stdio(false);
  27.   std::cin.tie(nullptr);
  28.  
  29.   std::string seq1;
  30.   std::string seq2;
  31.  
  32.   std::cin >> seq1;
  33.   std::cin >> seq2;
  34.  
  35.   auto len = longest_common_subseq(seq1, seq2);
  36.  
  37.   std::cout << len;
  38.  
  39.   return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement