Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- string s1, s2;
- int n1, n2;
- cin>>s1>>s2;
- n1=s1.size();
- n2=s2.size();
- int table[n2+2][n1+2];
- for(int i=0;i<=n1;i++) table[0][i]=0;
- for(int i=0;i<=n2;i++) table[i][0]=0;
- for(int i=1;i<=n2;i++){
- for(int j=1;j<=n1;j++){
- if(s2[i-1]==s1[j-1]){
- table[i][j]=table[i-1][j-1]+1;
- }
- else{
- table[i][j]=max(table[i][j-1],table[i-1][j]);
- }
- }
- }
- int sz=table[n2][n1];
- cout<<"Length of LCS "<<sz<<endl;
- vector<char> v;
- int x=table[n2][n1];
- int i=n2,j=n1;
- while(1){
- if(table[i][j]==0) break;
- if(table[i][j]==(table[i-1][j-1]+1) && s1[j-1]==s2[i-1]){
- v.push_back(s1[j-1]);
- i--;
- j--;
- }
- else{
- if(table[i][j]==table[i][j-1]){
- j--;
- }
- else{
- i--;
- }
- }
- }
- cout<<"Subsequence is ";
- for(int i=v.size()-1;i>=0;i--) cout<<v[i];
- cout<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement