POJ 2955 Brackets

来源:互联网 发布:晃然学姐的淘宝店 编辑:程序博客网 时间:2024/05/16 10:54

POJ 2955 Brackets

#include <iostream>#include <algorithm>#include <cstdio>#include <string.h>#include <string>using namespace std;//dp[i][i+j] = max{dp[i][k]+dp[k+1][i+j], dp[i-1][i+j-1]+(s[i]<->s[i+j]是否匹配)} | k:i...i+j-1;string s1;int dp[105][105];int main(){// freopen("1.txt","r",stdin);    while(cin>>s1,s1[0]!='e')    {    memset(dp,0,sizeof(dp));    int len=s1.length();    for (int i = len-1; i >= 0; --i)        //倒过来    {    for (int j = i+1; j < len; ++j)    {    if(s1[i]=='('&&s1[j]==')' || (s1[i]=='['&&s1[j]==']'))    dp[i][j] = dp[i+1][j-1]+2;    for (int k = i+1; k <= j; ++k)    {    dp[i][j]=max(dp[i][j],dp[i][k-1]+dp[k][j]);    }    }    }    cout<<dp[0][len-1]<<endl;    }    return 0;}


0 0