码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2955 (区间DP)

时间:2014-10-25 17:12:31      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   io   os   ar   for   strong   sp   

题目链接http://poj.org/problem?id=2955

题目大意:括号匹配。对称的括号匹配数量+2。问最大匹配数。

解题思路

看起来像个区间问题。

DP边界:无。区间间隔为0时,默认为memset为0即可。

对于dp[i][j],如果i和j匹配,不难有dp[i][j]=dp[i+1][j-1]+2.

然后枚举不属于两端的中点, dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]),合并两个区间的结果。

 

#include "cstdio"
#include "string"
#include "cstring"
#include "iostream"
using namespace std;
bool check(char a,int b)
{
    if(a==(&&b==)) return true;
    else if(a==[&&b==]) return true;
    else return false;
}
int dp[105][105];
int main()
{
    //freopen("in.txt","r",stdin);
    string str;
    while(cin>>str&&str!="end")
    {
        int n=str.size();
        for(int p=1;p<n;p++)
        {
            for(int i=0;i<n-p;i++)
            {
                int j=i+p;
                if(check(str[i],str[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]+dp[k][j]);
            }
        }
        printf("%d\n",dp[0][n-1]);
        memset(dp,0,sizeof(dp));
    }
}

 

POJ 2955 (区间DP)

标签:style   http   color   io   os   ar   for   strong   sp   

原文地址:http://www.cnblogs.com/neopenx/p/4050334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!