题目名称 4030. 最长括号匹配
输入输出 bracket.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2024-10-15加入
开放分组 全部用户
提交状态
分类标签
动态规划 区间DP
分享题解
通过:17, 提交:25, 通过率:68%
GravatarLikableP 100 0.022 s 1.68 MiB C++
Gravatar徐诗畅 100 0.033 s 3.81 MiB C++
Gravatar梧叶已同秋雨去 100 0.034 s 3.71 MiB C++
GravatarRuyi 100 0.034 s 3.74 MiB C++
Gravatarsyzhaoss 100 0.034 s 3.89 MiB C++
Gravatar会挽弯弓满月 100 0.035 s 3.83 MiB C++
Gravatar对立猫猫对立 100 0.036 s 3.71 MiB C++
Gravatar汐汐很希希 100 0.036 s 3.73 MiB C++
GravatarChenBp 100 0.036 s 3.73 MiB C++
Gravatarmxr2022 100 0.037 s 3.73 MiB C++
关于 最长括号匹配 的近10条评论(全部评论)

4030. 最长括号匹配

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

【题目描述】

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

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

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

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

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

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

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

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

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

‎给定一个字符组成的括号序列 $s=a_1a_2a_3...a_n‎‎$,您的目标是找到最长的合法括号序列的长度,该括号序列是s的子序列。也就是说,您希望找到最大的 $m$,对于下标 $i_1‎,i_2,...,i_m$,其中 $1 \leq i_1 \lt i_2 \lt ... \lt i_m \leq n‎‎$,序列 $a_{i_1}a_{i_2}...a_{i_m‎‎}$ 是一个合法括号序列。

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

【输入格式】

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

【输出格式】

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

【样例输入】

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

【样例输出】

6
6
4
0
6