Advertisement
shamiul93

1033 - Generating Palindromes

Jun 1st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1.  
  2. // LightOJ always needs this format for sure..so I made a copy of it...
  3. #include <bits/stdc++.h>
  4. #include<vector>
  5. #define ll                                      long long int
  6. #define fi                                      freopen("in.txt", "r", stdin)
  7. #define fo                                      freopen("out.txt", "w", stdout)
  8. #define m0(a) memset(a , 0 , sizeof(a))
  9. #define m1(a) memset(a , -1 , sizeof(a))
  10.  
  11. #define mx 150000
  12. using namespace std;
  13. string s ;
  14. ll N ;
  15.  
  16. ll dp[110][110] ;
  17.  
  18. ll pal(ll i , ll j)
  19. {
  20.     if(i >= j) return dp[i][j] = 0 ;
  21.     if(i >= N || j >= N) return dp[i][j] = 0 ;
  22.     if(dp[i][j] != -1) return dp[i][j] ;
  23.  
  24.     if(s[i] == s[j]) return dp[i][j] = pal(i+1 , j-1) ;
  25.     else return dp[i][j] = 1 + min(pal(i+1 , j) , pal(i , j-1)) ;
  26. }
  27.  
  28.  
  29. int main()
  30. {
  31.     ll T, t = 0 ;
  32.     scanf("%lld",&T) ;
  33.  
  34.     while(T--)
  35.     {
  36.         m1(dp) ;
  37.         t++ ;
  38.         cin >> s ;
  39.         N = s.length() ;
  40.  
  41.         printf("Case %lld: %lld\n",t , pal(0 , N-1)) ;
  42.     }
  43.     return 0 ;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement