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

poj 1141 区间dp

时间:2016-11-16 22:10:41      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:stdin   class   else   std   ons   ring   href   style   ems   

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

题解:略

代码:

 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
const int maxn=1e2+5;
const int INF=0x3f3f3f3f;

int dp[105][105];
int pos[105][105];
char str[105];

int Find(int x,int y)
{
    if((str[x]==( && str[y]==)) || (str[x]==[ && str[y]==])) return 1;
    else return 0;
}

void print(int x,int y)
{
    if(x>y) return;
    if(x==y)
    {
        if(str[x]==[ || str[x]==]) printf("[]");
        else printf("()");
    }
    else
    {
        if(pos[x][y]>=0)
        {
            print(x,pos[x][y]);
            print(pos[x][y]+1,y);
        }
        else if(str[x]==()
        {
            printf("(");
            print(x+1,y-1);
            printf(")");
        }
        else
        {
            printf("[");
            print(x+1,y-1);
            printf("]");
        }
    }
}

int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%s",str+1);
    memset(pos,-1,sizeof(pos));
    memset(dp,0,sizeof(dp));
    int n=strlen(str+1);
    for(int i=1; i<=n; i++) dp[i][i]=1;
    for(int d=1; d<n; d++)
    {
        for(int i=1; i+d<=n; i++)
        {
            int j=i+d;
            dp[i][j]=INF;
            for(int k=i; k<j; k++)
            {
                if(dp[i][k]+dp[k+1][j]<dp[i][j])
                {
                    dp[i][j]=dp[i][k]+dp[k+1][j];
                    pos[i][j]=k;
                }
            }
            if( Find(i,j) && dp[i+1][j-1]<dp[i][j] )
            {
                dp[i][j]=dp[i+1][j-1];
                pos[i][j]=-1;
            }
        }
    }
    print(1,n);
    puts("");
    return 0;
}

 

poj 1141 区间dp

标签:stdin   class   else   std   ons   ring   href   style   ems   

原文地址:http://www.cnblogs.com/a-clown/p/6071623.html

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