3657 括号序列

时间限制: 1 s
空间限制: 256000 KB
题目等级 : 黄金 Gold

题解
查看运行结果

题目描述 Description

我们用以下规则定义一个合法的括号序列:

(1)空序列是合法的

(2)假如S是一个合法的序列,则 (S) 和[S]都是合法的

(3)假如A 和 B 都是合法的,那么AB和BA也是合法的

例如以下是合法的括号序列:

()[](())([])()[]()[()]

以下是不合法括号序列的:

([])(([])([()

现在给定一些由'(', ')', '[', ,']'构成的序列,请添加尽量少的括号,得到一个合法的括号序列。

输入描述 Input Description

输入包括号序列S。含最多100个字符(四种字符: '(', ')', '[' and ']') ,都放在一行,中间没有其他多余字符。

输出描述 Output Description

使括号序列S成为合法序列需要添加最少的括号数量。

样例输入 Sample Input
([()

样例输出 Sample Output
2

数据范围及提示 Data Size & Hint
【样例说明】
最少添加2个括号可以得到合法的序列:()[()]或([()])
【数据范围】
S的长度<=100 (最多100个字符)。
代码:
#include< iostream >
using namespace std;
char p[101];
int f[101][101];
#include< cstdio >
#include< cstring >
int main()
{
scanf("%s",p+1);
int lena=strlen(p+1);
for(int i=1;i<=lena;++i)
f[i][i]=1;
for(int i=lena-1;i>=1;--i)
for(int j=i+1;j<=lena;++j)
{
f[i][j]=9999999;
for(int k=i;k<=j-1;++k)
{
if(((p[i]=='('&&p[j]==')')||(p[i]=='['&&p[j]==']'))&&i+1==j) f[i][j]=0; 
if(((p[i]=='('&&p[j]==')')||(p[i]=='['&&p[j]==']'))&&i+1!=j)
f[i][j]=min(min(f[i][j],f[i+1][j-1]),f[i][k]+f[k+1][j]);
else f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
}
}
printf("%d\n",f[1][lena]);
return 0;
}

转载于:https://www.cnblogs.com/c1299401227/p/5370676.html

138.括号序列(区间型DP)相关推荐

  1. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  2. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  3. BZOJ4350: 括号序列再战猪猪侠(区间DP)

    传送门 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列,则(A)是合法 ...

  4. BZOJ4350: 括号序列再战猪猪侠【区间DP】

    Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列, ...

  5. UVA 1626括号序列DP

    题意: 题目背景: 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果S是一个正规括号序列,那么(S)和[S]都是正规括号序列. 如果A和B都是正规括号序列,那么AB是一个正规括号序列. 例如 ...

  6. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈

    点击打开链接 题意: 给你一个括号序列,让你找到最长的连续的合法括号序列 然后让你输出这个括号序列的长度是多少 这么长的括号序列一共有多少个 思路: 看到括号匹配,就用stack来弄就好了 然后我们d ...

  7. [LOJ#2878]. 「JOISC 2014 Day2」邮戳拉力赛[括号序列dp]

    题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没 ...

  8. bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治

    这题真是十分难写啊 不管是点分治还是括号序列都有一堆细节.. 点分治:时空复杂度$O(n\log^2n)$,常数巨大 主要就是3个堆的初始状态 C堆:每个节点一个,为子树中的点到它父亲的距离的堆. B ...

  9. Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】

    校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...

最新文章

  1. CSS技巧和经验列表
  2. Docker 学习资料汇总
  3. Android复习11【service-音乐播放器、定时器、IntentService、ALDL使用】
  4. 性能测试培训:定位jvm耗时函数
  5. UITableView 系列五 :自定义UITableViewCell (实例)
  6. php 中 map和array,浅析php中array_map和array_walk的使用对比
  7. 深度剖解“IF表达式”底层实现过程
  8. 孙鑫VC学习笔记:第一讲 Windows程序内部运行原理
  9. go基于grpc构建微服务框架-集成opentracing
  10. 主梁弹性模量计算_桥梁支座详解全攻略!图文+计算详解,值得收藏!
  11. 最近做的一些文件破解的结果
  12. PRCS-1016 : Failed to resolve Single Client Access Name
  13. linux 设置用户只读,Linux只读账号配置
  14. 全天下最经典的句子,2013重现!
  15. icon-font 图标字体的使用
  16. vue 中面包屑带跳转的做法
  17. 比赛得分java_(比赛)得分:_____
  18. SQLPub免费的MySQL数据库
  19. RocketMQ源码解析-Broker部分之Broker启动过程
  20. 虚拟机重启网络失败:Error:Failed to start LSB: Bring up/down networking的解决方法

热门文章

  1. 解决checkbox与对应文字不对齐的问题
  2. Java回调机制解读
  3. Quartz 第六课 CronTrigger(官方文档翻译)
  4. 那天有个小孩跟我说LINQ(四)
  5. Unity3D 访问Access数据库
  6. sizeof和strlen的区别(其中涉及NUL的讲解)
  7. 内卷之下,前端工程师如何自救
  8. 普通java程序怎样用cron_java – Spring cron vs普通cron?
  9. python作者 google面试_如果Google面试让你用python写一个树的遍历程序
  10. c语言中有哪些函数关系,C语言中有哪些常用的函数