问题标题: 酷町堂:1205

0
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;
  • }
  • 哪里错了求大神!!!!!!!!!

0
已采纳
黄子澄
黄子澄
中级天翼
中级天翼

如果能配对,就赋值为a[i-1][j-1],你代码太乱了

0
0
我要回答