Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. string s;
  6. int v[101][101];
  7. int n;
  8. string pal;
  9.  
  10. int f(int l, int r)
  11. {
  12.     if (l > r)
  13.         return 0;
  14.     if (v[l][r] != -1)
  15.         return v[l][r];
  16.     if (s[l] == s[r])
  17.         return 2 + f(l+1, r-1);
  18.     return max(f(l+1,r), f(l, r-1));
  19. }
  20.  
  21. void ans(int l, int r, int pl, int pr)
  22. {
  23.     while (l <= r)
  24.     {
  25.         if (l == r)
  26.         {
  27.             pal[pl] = s[l];
  28.             l++; pl++;
  29.         }
  30.         else
  31.         {
  32.             if (s[l] == s[r])
  33.             {
  34.                 pal[pl] = s[l];
  35.                 pal[pr] = s[r];
  36.                 pl++; pr--; l++; r--;
  37.             }
  38.             else
  39.             {
  40.                 if (v[l+1][r] > v[l][r-1])
  41.                     l++;
  42.                 else
  43.                     r--;
  44.             }
  45.         }
  46.     }
  47. }
  48.  
  49. int main()
  50. {
  51.     getline(cin,s);
  52.     n = s.size();
  53.     int res;
  54.     for (int i = 0; i < n; i++)
  55.         for (int j = 0; j < n; j++)
  56.             v[i][j] = -1;
  57.     for (int i = 0; i < n; i++)
  58.         v[i][i] = 1;
  59.     for (int i = 0; i < n; i++)
  60.         for (int j = 0; j < i; j++)
  61.             v[i][j] = -1;
  62.     for (int i = 0; i < n; i++)
  63.         for (int j = 0; j < n; j++)
  64.             v[i][j] = f(i,j);
  65.     v[0][n-1] = f(0,n-1);
  66.     res = v[0][n-1];
  67.     pal = s;
  68.     ans(0,n-1,0,res-1);
  69.     cout << res << endl;
  70.     for (int i = 0; i < res; i++)
  71.         cout << pal[i];
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement