#qJDPybttg050104. 1572:括号配对
1572:括号配对
好的,我将这道题整理为清晰的题面格式,并补充样例解释、数据范围与时空限制:
题目描述
Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。
以下是 GBE 的定义:
- 空表达式是 GBE;
- 如果表达式 是 GBE,则 与 都是 GBE;
- 如果 与 都是 GBE,那么 是 GBE。
给定一个由 (、)、[、] 四种字符组成的字符串(可能不是 GBE),你可以在任意位置添加括号((、)、[、]),使之成为 GBE。求最少需要添加的字符数。
输入格式
输入仅一行,为一个字符串 ,只包含 (、)、[、] 四种字符。
输出格式
输出仅一个整数,表示使该字符串成为 GBE 所需添加的最少字符数。
样例
样例输入
[])
样例输出
1
样例解释
输入字符串:[] )(注意中间无空格,这里分开是为了清晰)。
一个 GBE 要求括号匹配且嵌套正确。
当前字符串 []) 中:
[]是合法的 GBE;- 但右括号
)没有匹配的左括号(。
我们可以添加一个左括号 ( 在开头,变成 ([]),这是 GBE:
()是 GBE(由规则 2 从空得到),[]是 GBE,([])是 GBE(规则 2,A=[])。
所以只需要添加 个字符。
数据范围
对于 的数据,输入的字符串长度 。
时空限制
- 时间:
- 内存:
提示
此题为 括号匹配的区间 DP 问题。
设 表示将子串 变成合法 GBE 所需添加的最少字符数。
状态转移:
- 如果 和 匹配(即
(与)匹配 或[与]匹配),则 ; - 否则 (添加一个括号与 或 匹配);
- 也可以枚举中间分割点 ,将字符串分成两部分分别处理:$dp[i][j] = \min_{i \le k < j} \{ dp[i][k] + dp[k+1][j] \}$。
初始化:(单个字符需要添加一个匹配字符)。
最终答案:,其中 是字符串长度。
时间复杂度 , 可以接受。