0
已解决
王佑宸
新手守护
新手守护
1205 数学括号经验值:2000
题目描述 Description
一个字符串,里面只包含"(",")","[","]"四种符号,请问添加最少多少个括号使得括号表达式是正确的
如:
[]是正确的
([])[]是正确的
((]是不正确的
([)]是不正确的
输入描述 Input Description
第一行输入一个正整数N,表示测试数据组数(N<=10)
每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100
输出描述 Output Description
对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行
样例输入 Sample Input
4 [] ([])[] ((] ([)]
样例输出 Sample Output
0 0 3 2
- #include<iostream>
- #include<cmath>
- #include<cstring>
- using namespace std;
- int main(){
- int N,n;
- int dp[200][200]={0};
- cin>>N;
- while(N--){
- char a[200]={0};
- cin>>a;
- n=strlen(a);
- for(int i=0;i<n;i++)
- dp[i][i]=1;
- for(int i=1;i<n;i++)
- for(int j=0;j<=i;j++){
- dp[j][i]=dp[j][i-1]+1;
- for(int k=j;k<=i-1;k++){
- if(a[k]+1==a[i]||a[k]+2==a[i])
- dp[j][i]=min(dp[j][i],dp[j][k-1]+dp[k+1][i-1]);
- }
- }
- cout<<dp[0][n-1]<<endl;
- }
- return 0;
- }
- 哪里错了求大神!!!!!!!!!