Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <string>
- #include <algorithm>
- #define filein "xauconmax.inp"
- #define fileout "xauconmax.out"
- using namespace std;
- void input(string &s1, string &s2)
- {
- getline(cin,s1);
- getline(cin,s2);
- }
- string process(string s1, string s2)
- {
- int A[s1.length()+1][s2.length()+1];
- string s="";
- for(int i=0; i<=s2.length() ; i++) A[0][i]=0;
- for(int i=0; i<=s1.length() ; i++) A[i][0]=0;
- int max1=0;
- for(int i=1; i<=s1.length(); i++)
- for(int j=1; j<=s2.length(); j++)
- if(s1[i-1]==s2[j-1]) A[i][j]=A[i-1][j-1]+1;
- else A[i][j]=max(A[i-1][j],A[i][j-1]);
- int i=s1.length(), j=s2.length();
- while (i>=0 && j>=0)
- {
- if(A[i][j]==A[i-1][j]) i--;
- else if(A[i][j]==A[i][j-1]) j--;
- else
- {
- s+=s1[i-1];
- i--;
- j--;
- }
- }
- reverse(s.begin(),s.end()-1); // dao nguoc xau s
- return s;
- }
- void output(string s)
- {
- cout<<s<<endl;
- }
- int main()
- {
- string s1="",s2="";
- input(s1,s2);
- output(process(s1,s2));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement