Brackets POJ - 2955 (區間dp)
阿新 • • 發佈:2017-08-26
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 whileView Code(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 }
Brackets POJ - 2955 (區間dp)