Advertisement
Ritam_C

Common_Subsequence

May 20th, 2021
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. typedef unsigned long long ull;
  4. typedef long double ld;
  5. #define vi vector<int>
  6. #define vll vector<long long>
  7. #define pb push_back
  8. #define vpll vector<pair<ll, ll>>
  9. #define vpi vector<pair<int, int>>
  10. #define p_b pop_back
  11. #define fl(i, a, b) for(int i = a; i <= b; i++)
  12. #define tests() int t; cin >> t; while(t--)
  13. #define MOD (ull)1000000007
  14. using namespace std;
  15.  
  16. template <typename T>
  17. void input(vector<T>& v, int n){
  18.     for(int i = 0; i < n; i++){
  19.         T x; cin >> x; v.pb(x);
  20.     }
  21. }
  22.  
  23. int main(){
  24.     ios_base::sync_with_stdio(false);
  25.     cin.tie(NULL);
  26.     string s, t;
  27.     cin >> s >> t;
  28.     string dp[s.length()+1][t.length()+1] = {""};
  29.     for(int i = 0; i <= s.length(); i++){
  30.         for(int j = 0; j <= t.length(); j++){
  31.             dp[i][j] = "";
  32.         }
  33.     }
  34.     for(int i = 0; i <= s.length(); i++){
  35.         for(int j = 0; j <= t.length(); j++){
  36.             if(i == 0 || j == 0){
  37.                 dp[i][j] = "";
  38.             } else{
  39.                 if(s[i-1] == t[j-1]){
  40.                     dp[i][j] = dp[i-1][j-1]+s[i-1];
  41.                 } else{
  42.                     if(dp[i-1][j].length() > 0 || dp[i][j-1].length() > 0){
  43.                         if(dp[i-1][j].length() >= dp[i][j-1].length()){
  44.                             dp[i][j] = dp[i-1][j];
  45.                         } else{
  46.                             dp[i][j] = dp[i][j-1];
  47.                         }
  48.                     } else{
  49.                         dp[i][j] = "";
  50.                     }
  51.                 }
  52.             }
  53.         }
  54.     }
  55.     cout << dp[s.length()][t.length()] << "\n";
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement