1. 程式人生 > >Brackets POJ - 2955 (區間dp)

Brackets POJ - 2955 (區間dp)

pla clu for eof %d img rac end racket

Brackets

POJ - 2955

題意:給一個括號序列,問最多有多少個括號是可以配對的。

技術分享
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<string>
 4 #include<iostream>
 5 #include<cstring>
 6 using namespace std;
 7 const int maxn=110;
 8 int dp[maxn][maxn];
 9 char s[maxn];
10 int main(){
11     while
(scanf("%s",s)&&strcmp(s,"end")!=0){ 12 memset(dp,0,sizeof(dp)); 13 int len=strlen(s); 14 for(int i=len-2;i>=0;i--) 15 for(int j=i+1;j<len;j++){ 16 if(s[i]==(&&s[j]==)||s[i]==[&&s[j]==]) dp[i][j]=dp[i+1][j-1]+2; 17 for
(int k=i;k<j;k++) 18 dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]); 19 } 20 printf("%d\n",dp[0][len-1]); 21 } 22 }
View Code

Brackets POJ - 2955 (區間dp)