Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstring>
- #include <fstream>
- using namespace std;
- char s1[1001], s2[1001];
- int n, m, p[1001][1001];
- ifstream fin("subsircomunmaximal.in");
- ofstream fout("subsircomunmaximal.out");
- void citire()
- {
- fin>>s1+1>>s2+1;
- n=strlen(s1+1);
- m=strlen(s2+1);
- }
- void drum(int i, int j)
- {
- if(i != 0 && j !=0)
- {
- if(p[i][j]==p[i-1][j-1]+1 && s1[i]==s2[j])
- {
- drum(i-1,j-1);
- fout<<s1[i];
- }
- else
- if(p[i-1][j]>=p[i][j-1])
- drum(i-1,j);
- else
- drum(i,j-1);
- }
- }
- void scm()
- {
- for(int i=1; i<=n; i++)
- for(int j=1; j<=m; j++)
- if(s1[i]==s2[j])
- p[i][j]=p[i-1][j-1]+1;
- else
- p[i][j]=max(p[i-1][j], p[i][j-1]);
- }
- int main()
- {
- citire();
- scm();
- drum(n,m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement