zoukankan      html  css  js  c++  java
  • 一本通 5.1 练习 1」括号配对

    plysc

    #10150. 「一本通 5.1 练习 1」括号配对

    内存限制:512 MiB 时间限制:1000 ms 标准输入输出
    题目类型:传统 评测方式:文本比较
    上传者: 1bentong
     
     

    题目描述

    Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。

    以下是 GBE 的定义:

    1. 空表达式是 GBE
    2. 如果表达式 A 是 GBE,则 [A](A) 都是 GBE
    3. 如果 AB 都是 GBE,那么 AB 是 GBE

    下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。

    输入格式

    输入仅一行,为字符串 BE。

    输出格式

    输出仅一个整数,表示增加的最少字符数。

    样例

    样例输入

    [])

    样例输出

    1

    数据范围与提示

    对于 100%100\%100% 的数据,输入的字符串长度小于 100100100。

     
     
     
     
    一道区间dp题,要知道题意。。。
    按区间dp套路就好
    注意加判断
    #include<bits/stdc++.h>
    using namespace std;
    
    char a[110];
    
    int f[110][110],n;
    
    int main(){
        scanf("%s",a+1);
        n=strlen(a+1);
        for(int i=1;i<=n;i++) f[i][i]=1;
        for(int len=1;len<n;len++)
            for(int i=1,j=i+len;j<=n;i++,j++){
                f[i][j]=0x3f3f3f3f;//注意这句话只能放这,全部赋极大值会错
                for(int k=i;k<j;k++) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
                if((a[i]=='('&&a[j]==')')||(a[i]=='['&&a[j]==']')) f[i][j]=min(f[i][j],f[i+1][j-1]);
            }
        printf("%d",f[1][n]);
        return 0;
    }
    View Code
  • 相关阅读:
    【转载】25岁毕业,拿一万块月薪
    博客界面终于变成了自己比较满意的感觉
    梯度下降法
    WPF小试牛刀
    关于BOF改进方法的一些introduction
    POJ——1012
    这是个伟大的暑假
    上午的四个coding问题
    FindFirst,FindNext,FindClose学习
    TThread类初探
  • 原文地址:https://www.cnblogs.com/plysc/p/10547887.html
Copyright © 2011-2022 走看看