Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- string lcs[101][101][102];
- string a, b, v;
- int P[102];
- int kmp(string s, int k, char c){
- while(k > 0 && s[k] != c){
- k = P[k - 1];
- }
- if(s[k] == c) k++;
- return k;
- }
- int main(){
- cin >> a >> b >> v;
- v = v + "#";
- for(int i=1; i<v.size(); i++){
- P[i] = P[i - 1];
- while(P[i] > 0 && v[P[i]] != v[i]){
- P[i] = P[P[i] - 1];
- }
- if(v[P[i]] == v[i]) P[i]++;
- }
- int resp = 0, maior = 0;
- for(int i=0; i<=a.size(); i++){
- for(int j=0; j<=b.size(); j++){
- for(int k = 0; k<v.size()-1; k++){
- if(i == 0 || j == 0){
- lcs[i][j][k] = "";
- }else{
- if(a[i-1] == b[j-1] && a[i-1] == v[k-1]){
- lcs[i][j][kmp(lcs[i-1][j-1][k], k, a[i-1])] = lcs[i-1][j-1][k] + a[i-1];
- }else{
- lcs[i][j][k] = (lcs[i-1][j][k].size() > lcs[i][j-1][k].size() ? lcs[i-1][j][k] : lcs[i][j-1][k]);
- }
- }
- if(i == a.size() && j == b.size()){
- if(lcs[i][j][k])
- }
- }
- }
- }
- cout << lcs[a.size()][b.size()] << "\n";
- return 0;
- }
- /*
- lcs(i, j, k):
- a[i] == b[j] == v[k]
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement