Skip to content
This repository has been archived by the owner on Oct 7, 2019. It is now read-only.

Commit

Permalink
Added lcs
Browse files Browse the repository at this point in the history
  • Loading branch information
Anshika-G committed Oct 2, 2018
1 parent 1d2c385 commit 188b068
Showing 1 changed file with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include<iostream>
#include<bits/stdc++.h>
using namespace std;

int lpsH(string s, int start, int end, int **output){
if(start > end){
return 0;
}

if(s.length() == 1 || start == end){
return 1;
}

if(output[start][end] > -1){
return output[start][end];
}
if(s[start] == s[end]){
output[start][end] = 2 + lpsH(s, start+1, end-1, output);
return output[start][end];
}
output[start][end] = max(lpsH(s, start+1, end, output), lpsH(s, start, end-1, output));
return output[start][end];
}
int lcs(string s1, string s2){
int n1 = s1.length();
int **output = new int*[n1+1];

for(int i = 0; i <= s1.length(); i++){
output[i] = new int[s2.length()+1];
for(int j = 0; j <= s2.length(); j++){
output[i][j] = -1;
}
}
return lpsH(s1, 0, s1.length()-1, output);
}
int main{
string s1, s2;
cin >> s1 >> s2;
cout << lcs(s1, s2);
}

0 comments on commit 188b068

Please sign in to comment.