#include<stdio.h> #include<string.h> #include<iostream> using namespace std; int max(int a,int b) { return a>b?a:b; } int main() { char str[110]; int dp[110][110]; int i,j; while(~scanf("%s",str)) { int len=strlen(str); if(str[0]==‘e‘) break; memset(dp,0,sizeof(dp)); for(i=len-1;i>=0;i--) { for(j=i+1;j<len;j++) { dp[i][j]=max(dp[i+1][j],dp[i][j-1]); if(str[i]==‘[‘&&str[j]==‘]‘||str[i]==‘(‘&&str[j]==‘)‘) { dp[i][j]=dp[i+1][j-1]+2; //printf("%d %d\n",i,j); } for(int x=i+1;x<j;x++) dp[i][j]=max(dp[i][j],dp[i][x]+dp[x+1][j]); } } printf("%d\n",dp[0][len-1]); } return 0; }
时间: 2024-10-11 06:36:32