【问题描述】

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

(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. 服务器预装操作系统,服务器预装操作系统吗
  2. 什么是事务?为什么需要事务?
  3. CSS 七层叠层顺序(stacking level)
  4. 集群没有leader_面试官问:说说你对ZooKeeper集群与Leader选举的理解?
  5. 你的企业离DevOps转型成功,就差这“七步法”路线图
  6. Spring Boot 集成MyBatis
  7. 使用 laravel Passport 做 API 认证
  8. Extjs EditorGridPanel功能
  9. Win8之常用快捷键(1)
  10. VSTest.Console.exe 的使用
  11. 2007年“网络十大炒女”排行榜
  12. 一张图片中多个图标如何通过CSS定位显示?
  13. 图片怎么加水印?添加水印其实很简单
  14. java super.clone解释_super.clone()做了什么
  15. ChatGPT有效提问技巧
  16. 利用phpstudy在网页输出学号姓名
  17. android 播放3gp音频,说说 Android 中如何操作音频与视频文件
  18. 基于Proteus学习单片机系列(七)——AD转换及其应用--ADC0832
  19. nginx配置防止域名恶意解析
  20. android.view.InflateException: Binary XML file line(报错日志要从下往上看)

热门文章

  1. C# XElement
  2. 全国大数据分析系统基于vue echarts
  3. php 7.4 Array and string offset access syntax with curly braces is deprecated
  4. 《WordPress插件开发手册》目录
  5. 谈谈JProfiler的实现原理
  6. SVN刷新不及时,要手动操作
  7. 与人和代码打交道,有何不同?
  8. 视频时帧率达到15,人眼就感觉是连续的
  9. AlphaGo程序出BUG了——第四局观感
  10. 在tunnelbroker为服务器IP建立IPV6 Tunnel