题目名称 4030. 最长括号匹配
输入输出 bracket.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2024-10-15加入
开放分组 全部用户
提交状态
分类标签
动态规划 区间DP
分享题解
通过:1, 提交:2, 通过率:50%
GravatarChenBp 100 0.107 s 7.21 MiB C++
GravatarChenBp 50 1.119 s 3.27 MiB C++
关于 最长括号匹配 的近10条评论(全部评论)

4030. 最长括号匹配

★   输入文件:bracket.in   输出文件:bracket.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】


我们对"合法的括号序列"进行以下定义:

1.‎空序列是一个合法的括号序列;

2.如果‎‎s‎‎是合法的括号序列,则(s)和[‎‎s]是合法的括号序列;

3.如果‎‎a‎‎和‎‎b‎‎是合法的括号序列,则‎‎ab‎‎是合法的括号序列;

4.没有其他序列是合法的括号序列。

‎例如,以下所有字符序列都是合法的括号序列:‎  

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

‎而以下字符序列则不是:‎  

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

‎给定一个字符组成的括号序列s=a1a2a3...an‎‎,您的目标是找到最长的合法括号序列的长度,该括号序列是s的子序列。也就是说,您希望找到最大的m,对于下标i1‎,i2,...,im,其中1<=i1<i2<...<im<=n‎‎,序列ai1ai2...aim‎‎是一个合法括号序列。

‎给定初始序列s=([([]])],其最长的合法括号子序列为[([])],长度为6。


【输入格式】

输入文件包含多个测试数据(不超过10个)。每个测试数据由一行组成,仅包含字符'(',')','['和']' ,每个字符串的长度在1到100之间。文件结尾用"end"表示结束。

【输出格式】

对于输入文件中的每个测试数据,在一行输出最长的合法括号子序列的长度。

【样例输入】

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

【样例输出】

6
6
4
0
6

【提示】

在此键入。

【来源】

在此键入。