区间DP
#include#include #include #include using namespace std;char s[1000];int dp[105][105];int main(){ int i,j,k; while(~scanf(" %s",s)) { if(strcmp(s,"end")==0) break; int len=strlen(s); for(i=len-1; i>=0; i--) s[i+1]=s[i]; memset(dp,0,sizeof(dp)); for(i=1; i<=len; i++) //长度 { for(j=1; j<=len; j++) //起点 { int w=i+j-1;//终点 if(w<=j||w>len) continue; if((s[j]=='('&&s[w]==')')||(s[j]=='['&&s[w]==']')) dp[j][w]=dp[j+1][w-1]+2; for(k=j; k