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

    坑点在于会有空串,需要用getline

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int f[105][105];
    bool match(char a,char b){return ((a=='('&&b==')')||(a=='['&&b==']'));}
    void print(int l,int r){
        if(l>r)return;
        if(l==r){
            if(s[l]=='('||s[l]==')')printf("()");
            else printf("[]");
            return;
        }
        if(match(s[l],s[r])&&f[l][r]==f[l+1][r-1])
         {printf("%c",s[l]),print(l+1,r-1),printf("%c",s[r]);return;}
        for(int k=l;k<r;k++)
            if(f[l][r]==f[l][k]+f[k+1][r])
                {print(l,k),print(k+1,r);return;}
    }
    int main(){
        int q;
        scanf("%d",&q);
        getchar();
        while(q--){
            memset(f,0,sizeof(f));
            getline(cin,s);
            getline(cin,s);
            int n=s.size();
            if(!n){puts("
    ");continue;}
            for(int i=0;i<n;i++)f[i][i]=1,f[i+1][i]=0;
            for(int i=n-2;i>=0;i--)
             for(int j=i+1;j<n;j++){
                f[i][j]=n;
                if(match(s[i],s[j]))
                  f[i][j]=min(f[i][j],f[i+1][j-1]);
                for(int k=i;k<j;k++)
                 f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); 
             }
            print(0,n-1);
            puts("");
            if(q)puts("");
        }
        return 0;
    }

    为何我UDEBUG没过AC了???

    $upd on 2020 11.1$ :$ spj$

  • 相关阅读:
    ant design pro梳理
    JSON.stringify()
    数组小细节
    js this细节
    策略模式解决if-else过多
    使用useState的赋值函数异步更新问题
    Hook
    React Api
    Intent
    树的非递归遍历
  • 原文地址:https://www.cnblogs.com/coder-cjh/p/11430480.html
Copyright © 2011-2022 走看看