区间DP poj 2955

时间:2023-03-09 09:34:00
区间DP poj 2955

求最多有几个括号可以匹配

 #include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std;
#define MAXN 110 int dp[MAXN][MAXN];
char z[MAXN]; int main()
{
while(scanf("%s",z)!=EOF)
{
if(strcmp(z,"end")==)
break; int len=strlen(z); memset(dp,,sizeof(dp));
int l,i,j,k; for(l=;l<=len;l++) //列举长度
{
for(i=;i<=len-l;i++)
{
j=i+l-;
if((z[i]=='('&&z[j]==')')||(z[i]=='['&&z[j]==']'))
dp[i][j]=dp[i+][j-]+; for(k=i;k<=j;k++) //取最大
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
printf("%d\n",dp[][len-]);
} return ;
}