Advertisement
Guest User

Untitled

a guest
Dec 16th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int dp[1010][1010];
  5. char w[1010];
  6.  
  7. int cost(char l, char r){
  8.     int val = 0;
  9.     if(l == ')' || l == ']') val++;
  10.     if(r == '(' || r == '[') val++;
  11.     if(abs(l - r) > 2) val++;
  12.     return val;
  13. }
  14. int main(){
  15.     scanf(" %s",w+1);
  16.     int n = strlen(w+1);
  17.     for(int i=1 ; i<n ; i++) dp[i][i+1] = cost(w[i], w[i+1]);
  18.     for(int sz=4 ; sz<=n ; sz+=2){
  19.         for(int i=1 ; i<=n ; i++){
  20.             int j=i+sz-1;
  21.             if(j > n) break ;
  22.             dp[i][j] = dp[i+1][j-1] + cost(w[i], w[j]);
  23.             for(int k=i+1 ; k<j ; k+=2){
  24.                 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j]);
  25.             }
  26.         }
  27.     }  
  28.     printf("%d\n",dp[1][n]);
  29.     return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement