括号序列
题目描述
我们用以下规则定义一个合法的括号序列:
(1)空序列是合法的
(2)假如 SSS 是一个合法的序列,则 (S)(S)(S) 和 [S][S][S] 都是合法的
(3)假如 AAA 和 BBB 都是合法的,那么 ABABAB 和 BABABA 也是合法的
例如以下是合法的括号序列:(), [], (()), ([]), ()[], ()[()]
。
以下是不合法括号序列的:(, [, ], )(, (][), ([()
。
现在给定一些由 (
, )
, [
, ]
构成的序列 ,请添加尽量少的括号,得到一个合法的括号序列。
输入格式
输入一行括号序列 SSS,只包含四种字符: (,),[,]
) ,都放在一行,中间没有其他多余字符。
输出格式
输出一个整数,表示使括号序列 SSS 成为合法序列需要添加最少的括号数量。
样例
输入数据#1
([()
输出数据#1
2
解释#1
最少添加 222 个括号可以得到合法的序列:()[()]
或 ([()])
。
数据范围
- 对于 10%10\%10% 的测试数据,SSS 的长度 ≤10≤10≤10
- 另有 20%20\%20% 的测试数据,SSS 中仅含有左括号
(
和[
- 另有 20%20\%20% 的测试数据,SSS 中仅含有小括号
(
和)
- 对于 100%100\%100% 的测试数据,SSS 的长度 ≤500≤500≤500
思路分析
区间 dp 板子题。
定义 fi,jf_{i,j}fi,j 表示使区间 (i,j)(i,j)(i,j