【问题描述】

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

(1)空序列是合法的

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

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

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

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

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

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

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

【输入】

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

【输出】

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

【样例输入】

([()

【样例输出】

2
【样例说明】
最少添加2个括号可以得到合法的序列:()[()]或([()])
【数据范围】S的长度<=100 (最多100个字符)。

解题思路
 1 program kuohao;
 2 uses math;
 3 const maxn=255;
 4 var
 5 f:Array[0..maxn,0..maxn] of longint;
 6   s:string;
 7   p,i,j,k,min,flag:Longint;
 8 begin
 9     readln(s);
10     for i:=1 to length(s) do f[i,i]:=1;
11     for p:=1 to length(s) do//枚举次数
12         for i:=1 to length(s)-p do//枚举起点
13         begin
14             min:=maxlongint;
15             flag:=0;
16             j:=i+p;
17             if ((s[i]='(') and(s[j]=')')) or((s[i]='[')and (s[j]=']'))
18             then
19             begin
20                 f[i,j]:=f[i+1,j-1];
21                 flag:=1;
22             end;
23             for k:=i to j-1 do//枚举决策
24             begin
25                  if f[i,k]+f[k+1,j]<min then min:=f[i,k]+f[k+1,j];
26             end;
27             if (min<f[i,j]) or (flag=0) then f[i,j]:=min;
28     writeln(f[1,length(s)]);
29 end.

转载于:https://www.cnblogs.com/wuminyan/p/4740399.html

CODEVS 3657 括号序列相关推荐

  1. 138.括号序列(区间型DP)

    3657 括号序列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们用以下规则定义一个合法的括号序列: (1 ...

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

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

  3. 2016百度实习编程题:括号序列

    不知如何解决 1.感觉贪心或者动态规划,不知道如何解决 2.做过生成合法括号序列的题目,想到用DFS补成合法的括号,然而没有成功

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

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

  5. [ Nowcoder Contest 165 #D ] 合法括号序列

    \(\\\) \(Description\) 键盘上有三个键,敲击效果分别是: 在输出序列尾部添加一个左括号 在输出序列尾部添加一个右括号 删除输出序列尾部的第一个元素,若输出序列为空,则什么都不发生 ...

  6. BZOJ4350: 括号序列再战猪猪侠

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

  7. 常考数据结构与算法:括号序列

    题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[] ...

  8. BZOJ2209: [Jsoi2011]括号序列

    BZOJ2209: [Jsoi2011]括号序列 Description Input 输入数据的第一行包含两个整数N和Q,分别表示括号序列的长度,以及操作的个数. 第二行包含一个长度为N的括号序列. ...

  9. 2020\Simulation_2\4.括号序列

    [问题描述] 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多少种? [答案提交] 这是一道结果填空的题, ...

  10. [Jobdu] 题目1337:寻找最长合法括号序列

    题目描述: 给你一个长度为N的,由'('和')'组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...

最新文章

  1. ICCV2021|单目3D目标检测真的需要伪激光雷达吗?
  2. 福利 | 与院士和业界翘楚共话智能无人系统!
  3. wireshark 抓包再利用TCP socket发送包里的payload是可以实现登陆的
  4. Jquery操作Cookie,保存商品ID值至本地文件中
  5. 对模型方差和偏差的解释之一:过拟合
  6. python 字符串和容器总结
  7. 【PKUWC2018】随机游走【Min-Max容斥】【树形dp】【FWT】
  8. matlab 曲面拟合_利用python进行曲面拟合并进行3D显示
  9. 今天发现的一个小问题,找不到模拟器和手机设备
  10. spring常见用法之安全模块(注册登录模块)
  11. (一)绪论 | 如何判断某数据结构是逻辑结构还是存储结构,是线性结构还是非线性结构
  12. salt returner mysql_saltstack mysql returner
  13. 《区块链革命》读书笔记1可信的协议 引导未来:区块链经济七大设计原则
  14. 微信与此ipad不兼容电脑也显示设备版本过低9.0_iOS系统出现怪异Bug:iPhone/iPad没法正常用;微软计划6月开测Windows 10 21H1更新...
  15. 上位机入门之二进制置位
  16. 山东科技大学OJ题库 1013-多少张钞票
  17. 非线性方程(组)的求解
  18. mysql设置远程访问。
  19. Easyexcel数据追加模式
  20. Cognos产品功能介绍

热门文章

  1. 龙芯提供的jna-4.5.2,没有libjnidispatch.so,也能用
  2. VirtualStudio:离线下载了20G、40G,安装时说缺少很多
  3. 从离职之日起,一年内仲裁
  4. dlopen失败一例:路径字串多一个回车,导致文件找不到
  5. 听通灵人说自己的感悟
  6. 管理感悟:当好主管的关键
  7. 写失败数据写入成功_马克·吐温写小说有多成功,做生意就有多失败,创业亏的就剩烟囱...
  8. python代码缩进中是否支持tab键和空格混用_python自测——编码规范
  9. com 的 IUnknown 接口的了解
  10. 梦幻西游69人最多的服务器,梦幻西游:老王探访难以形容的鬼区,没有摆摊摊位,找不到69玩家...