Iamtui1010

countpl.cpp

Jan 14th, 2022
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<vector>
  4.  
  5. #define long long long
  6. #define nln '\n'
  7.  
  8. using namespace std;
  9.  
  10. bool palindrome(string str)
  11. {
  12.     if (!str.size())
  13.         return 1;
  14.  
  15.     long lef, rig;
  16.     if (str.size() % 2 == 0)
  17.         lef = str.size()/2-1, rig = lef+1;
  18.     else
  19.         lef = str.size()/2, rig = lef;
  20.  
  21.     while (lef >= 0 && rig <= (long)str.size()-1){
  22.         if (str[lef] != str[rig])
  23.             return 0;
  24.         --lef; ++rig;
  25.     }
  26.     return 1;
  27. }
  28.  
  29. int main()
  30. {
  31.     cin.tie(0)->sync_with_stdio(0);
  32.     cout.tie(0)->sync_with_stdio(0);
  33.     //freopen("palin.inp", "r", stdin);
  34.     string str;
  35.     getline(cin, str, nln);
  36.     str = '&'+str;
  37.     long n = str.size()-1;
  38.  
  39.     vector<long> dp(n+1, 300);
  40.     dp[0] = 0;
  41.     for (long i = 1; i <= n; ++i)
  42.         for (long j = 0; j < i; ++j)
  43.             if (dp[j]+1 < dp[i] && palindrome(str.substr(j+1, i-j)))
  44.                 dp[i] = dp[j]+1;
  45.     cout << dp[n] << nln;
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment