Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. string lcs[101][101][102];
  6. string a, b, v;
  7. int P[102];
  8.  
  9. int kmp(string s, int k, char c){
  10.     while(k > 0 && s[k] != c){
  11.         k = P[k - 1];
  12.     }
  13.  
  14.     if(s[k] == c) k++;
  15.  
  16.     return k;
  17. }
  18.  
  19. int main(){
  20.     cin >> a >> b >> v;
  21.  
  22.     v = v + "#";
  23.  
  24.     for(int i=1; i<v.size(); i++){
  25.         P[i] = P[i - 1];
  26.  
  27.         while(P[i] > 0 && v[P[i]] != v[i]){
  28.             P[i] = P[P[i] - 1];
  29.         }
  30.  
  31.         if(v[P[i]] == v[i]) P[i]++;
  32.     }
  33.  
  34.     int resp = 0, maior = 0;
  35.  
  36.     for(int i=0; i<=a.size(); i++){
  37.         for(int j=0; j<=b.size(); j++){
  38.             for(int k = 0; k<v.size()-1; k++){
  39.                 if(i == 0 || j == 0){
  40.                     lcs[i][j][k] = "";
  41.                 }else{
  42.                     if(a[i-1] == b[j-1] && a[i-1] == v[k-1]){
  43.                         lcs[i][j][kmp(lcs[i-1][j-1][k], k, a[i-1])] = lcs[i-1][j-1][k] + a[i-1];
  44.                     }else{
  45.                         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]);
  46.                     }
  47.                 }
  48.  
  49.                 if(i == a.size() && j == b.size()){
  50.                     if(lcs[i][j][k])
  51.                 }
  52.             }
  53.         }
  54.     }
  55.  
  56.     cout << lcs[a.size()][b.size()] << "\n";
  57.  
  58.     return 0;
  59. }
  60.  
  61. /*
  62. lcs(i, j, k):
  63.     a[i] == b[j] == v[k]
  64.  
  65. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement