Advertisement
Guest User

subsircomunmaximal_OF

a guest
May 24th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define Nmax 1005
  4.  
  5. using namespace std;
  6.  
  7. ifstream fin("subsircomunmaximal.in");
  8. ofstream fout("subsircomunmaximal.out");
  9.  
  10. char C1[Nmax], C2[Nmax];
  11. int N, M;
  12. int dp[Nmax][Nmax];
  13. char ans[Nmax];
  14. int L = 0;
  15.  
  16. int main()
  17. {
  18.     fin >> (C1 + 1) >> (C2 + 1);
  19.     N = strlen(C1 + 1);
  20.     M = strlen(C2 + 1);
  21.     for(int i = 1; i <= N; i++)
  22.         for(int j = 1; j <= M; j++)
  23.             if(C1[i] == C2[j])
  24.                 dp[i][j] = 1 + dp[i - 1][j - 1];
  25.             else
  26.                 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
  27.     for(int i = N, j = M; i >= 1 && j >= 1;)
  28.     {
  29.         if(C1[i] == C2[j])
  30.             ans[++L] = C1[i], i--, j--;
  31.         else
  32.         {
  33.             if(dp[i - 1][j] > dp[i][j - 1])
  34.                 i--;
  35.             else
  36.                 j--;
  37.         }
  38.     }
  39.     reverse(ans + 1, ans + L + 1);
  40.     fout << (ans + 1) << "\n";
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement