Advertisement
deushiro

Untitled

Jan 10th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. vector<vector<int>> dp;
  6.  
  7. string s;
  8.  
  9. int solve(int l, int r){
  10.     string a = "";
  11.     string b = "";
  12.     for(int i = l; i < (l + r + 1) / 2; ++i){
  13.         a += s[i];
  14.         string c;
  15.         c.push_back(s[r - i + l]);
  16.         b = c + b;
  17.         if(a == b){
  18.             return(a.size());
  19.         }
  20.     }
  21.     return 0;
  22. }
  23.  
  24. int f(int l, int r){
  25.     if(l == r){
  26.         return 1;
  27.     }
  28.     if(dp[l][r] != 0){
  29.         return(dp[l][r]);
  30.     }
  31.     int x = solve(l, r);
  32.     if(x == 0){
  33.         dp[l][r] = r - l + 1;
  34.     }
  35.     else{
  36.         dp[l][r] = max(f(l + x, r), f(l, r - x));
  37.     }
  38.     return(dp[l][r]);
  39. }
  40.  
  41. int main() {
  42.     cin >> s;
  43.     dp.resize(s.size(), vector<int>(s.size()));
  44.     f(0, s.size() - 1);
  45.     cout << dp[0][s.size() - 1] << "\n";
  46.    
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement