Advertisement
deushiro

Untitled

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