思路:黑书的例题

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define Maxn 1010
using namespace std;
int dp[Maxn][Maxn],v[Maxn][Maxn];
char str[Maxn];
void Out(int s,int e)
{
if(s>e)
return ;
if(s==e)
{
if(str[s-]=='('||str[s-]==')')
printf("()");
else
printf("[]");
return ;
}
if(v[s][e]==-)
{
printf("%c",str[s-]);
Out(s+,e-);
printf("%c",str[e-]);
return ;
}
Out(s,v[s][e]);
Out(v[s][e]+,e);
}
int main()
{
int n,i,j,t,k;
memset(dp,,sizeof(dp));
memset(v,-,sizeof(v));
scanf("%s",str);
n=strlen(str);
for(i=;i<=n;i++)
dp[i][i]=,dp[i][i-]=;
for(i=;i<=n;i++)
for(j=i-;j>=;j--){
if(str[i-]==')'&&str[j-]=='('||str[i-]==']'&&str[j-]=='[')
{
if(dp[i-][j+]<dp[i][j])
dp[i][j]=dp[i-][j+],v[j][i]=-;
}
else
{
if(dp[i-][j]<dp[i][j+])
dp[i][j]=dp[i-][j]+,v[j][i]=i-;
else
dp[i][j]=dp[i][j+]+,v[j][i]=j;
}
for(k=j;k<i;k++)
{
if(dp[i][k+]+dp[k][j]<dp[i][j])
dp[i][j]=dp[i][k+]+dp[k][j],v[j][i]=k;
}
}
Out(,n);
printf("\n");
return ;
}

poj 1141 动态规划进行括号匹配的更多相关文章

  1. POJ 1141 Brackets Sequence(括号匹配二)

    题目链接:http://poj.org/problem?id=1141 题目大意:给你一串字符串,让你补全括号,要求补得括号最少,并输出补全后的结果. 解题思路: 开始想的是利用相邻子区间,即dp[i ...

  2. POJ 2955 Brackets --最大括号匹配,区间DP经典题

    题意:给一段左右小.中括号串,求出这一串中最多有多少匹配的括号. 解法:此问题具有最优子结构,dp[i][j]表示i~j中最多匹配的括号,显然如果i,j是匹配的,那么dp[i][j] = dp[i+1 ...

  3. 区间dp模型之括号匹配打印路径 poj(1141)

    题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...

  4. 括号序列问题 uva 1626 poj 1141【区间dp】

    首先考虑下面的问题:Code[VS] 3657 我们用以下规则定义一个合法的括号序列: (1)空序列是合法的 (2)假如S是一个合法的序列,则 (S) 和[S]都是合法的 (3)假如A 和 B 都是合 ...

  5. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

  6. POJ 2955 Brackets(括号匹配一)

    题目链接:http://poj.org/problem?id=2955 题目大意:给你一串字符串,求最大的括号匹配数. 解题思路: 设dp[i][j]是[i,j]的最大括号匹配对数. 则得到状态转移方 ...

  7. POJ 2955 括号匹配,区间DP

    题意:给你一些括号,问匹配规则成立的括号的个数. 思路:这题lrj的黑书上有,不过他求的是添加最少的括号数,是的这些括号的匹配全部成立. 我想了下,其实这两个问题是一样的,我们可以先求出括号要匹配的最 ...

  8. poj 2955 Brackets (区间dp 括号匹配)

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

  9. 集训第五周动态规划 J题 括号匹配

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

随机推荐

  1. 3DSlicer源代码编译过程vs2008+windows xp [转]

    一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...

  2. 高性能的JavaScript -- 读书笔记

    高性能的JavaScript 一.      加载和运行 将脚本放在底部 脚本下载解析执行时,页面已经加载完成并显示在用户面前 成组脚本 减少外部脚本文件数量,整合成一个文件 延迟脚本 动态脚本元素 ...

  3. FLEX4中的Panel如何实现带自定义图标和按钮

      做过flex开发的程序员都知道,使用flex3中的panel自定义按钮很容易,而且flex3的panel有icon属性.但是flex4的中大部分的控件与flex3中的控件实现方式有很大的变化,同是 ...

  4. Emit Mapper官方文档

    概述 优点 快速指导 类型转换 用户配置

  5. Codefoces 429 D. Tricky Function

    裸的近期点对.... D. Tricky Function time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  6. Codeforces Beta Round #18 (Div. 2 Only) C. Stripe 前缀和

    C. Stripe Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/18/C ...

  7. Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs

    C. Vanya and Scales Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/p ...

  8. org.apache.catalina.mbeans.ServerLifecycleListener

    Tomcat 启动报错: java.lang.ClassNotFoundException: org.apache.catalina.mbeans.ServerLifecycleListener at ...

  9. js实现按回车自行提交

    <script type="text/javascript"> document.onkeydown = function (e) { var theEvent = w ...

  10. Oracle 数据文件管理

    1.手工改变数据文件的大小 SQL>conn / as sysdba SQL>Createtablespace exampletb Datafile 'E:\ examp01.dbf' s ...