题目描述
Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。
以下是 GBE 的定义:
空表达式是 GBE
如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE
如果 A 与 B 都是 GBE,那么 AB 是 GBE
下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。
输入格式
输入仅一行,为字符串 BE。
输出格式
输出仅一个整数,表示增加的最少字符数。(把所有未配备的括号配备的最少次数)
样例
Input
[])
Output
1
注意
这不能看成回文串的匹配如 ][][(())((([]))),正确答案是:2;回文串的匹配是8;
两种写法,一种是dp[][]数组记录配对的括号数,另一种是dp[][]数组记录未配对的括号数
代码
#include "stdio.h"
#include "algorithm"
using namespace std;
#include "string.h"
char a[109];
int dp[109][109];//记录配对的括号数
int main()
{
scanf("%s",a);
int l=strlen(a);
for(int len=2;len<=l;len++)//长度
{
for(int i=0;i+len-1<