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

括号匹配

时间:2018-06-27 00:17:30      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:using   return   nbsp   bubuko   完全   const   alt   mem   ace   

poj 2955

http://poj.org/problem?id=2955

技术分享图片

题目大意:找到数量最多的完全匹配的括号        ‘[’与‘]‘匹配,‘(‘与‘)‘匹配

区间dp

定义dp[i][j]为从i到j数量最多的完全匹配的括号

当 str[i]==‘[‘ && str[j]==‘]‘ 或 str[i]==‘(‘ && str[j]==‘)‘ 时  dp[i][j]=dp[i+1][j-1]+2;

代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
char str[N]; 
int dp[N][N];
int main()
{
    while(~scanf("%s",str+1))
    {
        if(str[1]==e) break;
        memset(dp,0,sizeof(dp));
        int ans=-1;
        int len=strlen(str+1);
        for(int v=1;v<=len;v++)
            for(int i=1;i+v-1<=len;i++)
            {
                int j=i+v-1;
                if((str[i]==[&&str[j]==])||(str[i]==(&&str[j]==)))
                    dp[i][j]=dp[i+1][j-1]+2;
                for(int k=i;k<j;k++)
                    dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
                ans=max(ans,dp[i][j]);
            }
        printf("%d\n",ans);
    }
    return 0;
 } 

变式:括号匹配2

技术分享图片

只需要括号总数减去最大完全匹配括号数即可

代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
char str[N]; 
int dp[N][N];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",str+1);
        memset(dp,0,sizeof(dp));
        int ans=-1;
        int len=strlen(str+1);
        for(int v=1;v<=len;v++)
            for(int i=1;i+v-1<=len;i++)
            {
                int j=i+v-1;
                if((str[i]==[&&str[j]==])||(str[i]==(&&str[j]==)))
                    dp[i][j]=dp[i+1][j-1]+2;
                for(int k=i;k<j;k++)
                    dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
                ans=max(ans,dp[i][j]);
            }
        printf("%d\n",len-ans);
    }
    return 0;
 } 

 

括号匹配

标签:using   return   nbsp   bubuko   完全   const   alt   mem   ace   

原文地址:https://www.cnblogs.com/greengenius/p/9231825.html

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