Advertisement
mhdew

LCS

Dec 7th, 2018
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     string s1, s2;
  8.     int n1, n2;
  9.     cin>>s1>>s2;
  10.     n1=s1.size();
  11.     n2=s2.size();
  12.  
  13.     int table[n2+2][n1+2];
  14.  
  15.     for(int i=0;i<=n1;i++) table[0][i]=0;
  16.     for(int i=0;i<=n2;i++) table[i][0]=0;
  17.  
  18.     for(int i=1;i<=n2;i++){
  19.         for(int j=1;j<=n1;j++){
  20.             if(s2[i-1]==s1[j-1]){
  21.                 table[i][j]=table[i-1][j-1]+1;
  22.             }
  23.             else{
  24.                 table[i][j]=max(table[i][j-1],table[i-1][j]);
  25.             }
  26.         }
  27.     }
  28.  
  29.     int sz=table[n2][n1];
  30.     cout<<"Length of LCS "<<sz<<endl;
  31.     vector<char> v;
  32.     int x=table[n2][n1];
  33.     int i=n2,j=n1;
  34.  
  35.  
  36.     while(1){
  37.         if(table[i][j]==0) break;
  38.         if(table[i][j]==(table[i-1][j-1]+1) && s1[j-1]==s2[i-1]){
  39.             v.push_back(s1[j-1]);
  40.             i--;
  41.             j--;
  42.         }
  43.         else{
  44.             if(table[i][j]==table[i][j-1]){
  45.                 j--;
  46.             }
  47.             else{
  48.                 i--;
  49.             }
  50.         }
  51.     }
  52.  
  53.     cout<<"Subsequence is ";
  54.     for(int i=v.size()-1;i>=0;i--) cout<<v[i];
  55.     cout<<endl;
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement