求最多找到多少组匹配的括号
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<queue>
#define INF 2000000000
int dp[105][105];
char s[105];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int re,i,j,k,l,len;
while(scanf("%s",s))
{
len=strlen(s);
if(strcmp(s,"end")==0)
break;
memset(dp,0,sizeof(dp));
/*for(i=0;i<len;i++)
for(j=0;j<len;j++)
printf("%d %d %d\n",i,j,dp[i][j]);*/
for(i=len-2;i>=0;i--)
for(j=i+1;j<len;j++)
{
if(((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))&&dp[i+1][j-1]==dp[i+1][j])
dp[i][j]=dp[i+1][j]+1;
else
dp[i][j]=dp[i+1][j];
for(k=i;k<j;k++)
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
}
printf("%d\n",dp[0][len-1]*2);
/*for(i=0;i<len;i++)
for(j=0;j<len;j++)
printf("%d %d %d\n",i,j,dp[i][j]);*/
}
return 0;
}