poj2955(区间dp基础)

来源:互联网 发布:c语言程序编程软件 编辑:程序博客网 时间:2024/06/05 19:51
#include<iostream>#include<cstdio>#include<cstring>using namespace std;char s[150];int f[150][150];//f[i][j]表示s[i]到s[j]区间匹配的最多括号数int main(){    while(scanf("%s",s))    {        if(s[0]=='e') break;        int len=strlen(s);        memset(f,0,sizeof(f));        for(int k=2;k<=len;k++) //区间长度        {            for(int i=0;i+k-1<len;i++)            {                int j=i+k-1; //区间右端点                if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))                 f[i][j]=f[i+1][j-1]+2;                for(int h=i;h<j;h++) //更新该区间范围的最值                    f[i][j]=max(f[i][j],f[i][h]+f[h+1][j]);            }        }        printf("%d\n",f[0][len-1]);    }}

0 0
原创粉丝点击