zoukankan      html  css  js  c++  java
  • codevs 3657 括号序列

    dp[i][j]表示i到j需要添加的长度

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<queue>
     5 #include<stack>
     6 using namespace std;
     7 #define LL long long
     8 #define clc(a,b) memset(a,b,sizeof(a))
     9 #define inf 0x3f3f3f3f
    10 const int maxn=20010;
    11 char s[1010];
    12 // int ans;
    13 int dp[1010][1010];
    14 int used[1010][1010];
    15 int dfs(int x,int y){
    16    int ans=inf;
    17     if(used[x][y]) return dp[x][y];
    18     if(x>y) return 0;
    19     if(x==y) return 1;
    20     else 
    21     {
    22        if((s[x]=='('&&s[y]==')')||(s[x]=='['&&s[y]==']'))
    23         ans=min(ans,dfs(x+1,y-1));
    24        if(s[x]=='('||s[x]=='[')
    25         ans=min(ans,dfs(x+1,y)+1);
    26        if(s[y]==')'||s[y]==']')
    27         ans=min(ans,dfs(x,y-1)+1);
    28        for(int i=x;i<y;i++){
    29         ans=min(ans,dfs(x,i)+dfs(i+1,y));
    30     }
    31     }
    32     dp[x][y]=ans;
    33     used[x][y]=1;
    34     return dp[x][y];
    35 }
    36 int main(){
    37     while(scanf("%s",s)!=EOF){
    38         // ans=-inf;
    39         clc(dp,-1);
    40         clc(used,0);
    41         int ans=dfs(0,strlen(s)-1);
    42         printf("%d
    ",ans);
    43     }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    控制流程
    表达式
    2020.2.7
    寒假自学进度六
    2020.2.6
    2020.2.5
    寒假自学进度五
    Scala初级实验
    寒假自学进度四
    Spark运行基本流程
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5396792.html
Copyright © 2011-2022 走看看