POJ 1141 区间DP
给一组小括号与中括号的序列,加入最少的字符,使该序列变为合法序列,输出该合法序列。
dp[a][b]记录a-b区间内的最小值,
mark[a][b]记录该区间的最小值怎样得到。
#include "stdio.h"
#include "string.h" int inf=99999999;
char str[110];
int dp[110][110],mark[110][110]; void pri(int l,int r)
{
if (l>r) return ;
if (l==r)
{
if(str[l]=='(' || str[r]==')') printf("()");
if(str[l]=='[' || str[r]==']') printf("[]");
return ;
} if (mark[l][r]==-1)
{
printf("%c",str[l]);
pri(l+1,r-1);
printf("%c",str[r]);
}
else
{
pri(l,mark[l][r]);
pri(mark[l][r]+1,r);
} }
int main()
{ int i,j,k,a,b,n;
while (gets(str))
{
n=strlen(str);
if (n==0)
{
printf("\n");
continue;
} for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (i>=j) dp[i][j]=0;
else dp[i][j]=inf; for (i=0;i<n;i++)
dp[i][i]=1; for (j=2;j<=n;j++)
for (i=0;i<=n-j;i++)
{
a=i;
b=i+j-1;
if (str[a]=='(' && str[b]==')')
{
dp[a][b]=dp[a+1][b-1];
mark[a][b]=-1;
}
if (str[a]=='[' && str[b]==']')
{
dp[a][b]=dp[a+1][b-1];
mark[a][b]=-1;
} for (k=a;k<b;k++)
if (dp[a][k]+dp[k+1][b]<dp[a][b])
{
dp[a][b]=dp[a][k]+dp[k+1][b];
mark[a][b]=k;
}
} pri(0,n-1);
printf("\n"); }
return 0;
}
POJ 1141 区间DP的更多相关文章
- poj 1141 区间dp+递归打印路径
Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30383 Accepted: 871 ...
- POJ 1141 经典DP 轨迹打印
又几天没写博客了,大二的生活实在好忙碌啊,开了五门专业课,每周都是实验啊实验啊实验啊....我说要本月刷够60题,但好像完不成了,也就每天1题的样子.如今写动规还是挺有条理的,包括这道需要打印轨迹,其 ...
- poj 3280(区间DP)
Cheapest Palindrome Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7869 Accepted: 38 ...
- poj 2955 区间dp入门题
第一道自己做出来的区间dp题,兴奋ing,虽然说这题并不难. 从后向前考虑: 状态转移方程:dp[i][j]=dp[i+1][j](i<=j<len); dp[i][j]=Max(dp[i ...
- POJ 2955 (区间DP)
题目链接: http://poj.org/problem?id=2955 题目大意:括号匹配.对称的括号匹配数量+2.问最大匹配数. 解题思路: 看起来像个区间问题. DP边界:无.区间间隔为0时,默 ...
- POJ 1651 (区间DP)
题目链接: http://poj.org/problem?id=1651 题目大意:加分取牌.如果一张牌左右有牌则可以取出,分数为左牌*中牌*右牌.这样最后肯定还剩2张牌.求一个取牌顺序,使得加分最少 ...
- poj 1390 区间dp
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5035 Accepted: 2065 Descriptio ...
- POJ 1651 区间DP Multiplication Puzzle
此题可以转化为最优矩阵链乘的形式,d(i, j)表示区间[i, j]所能得到的最小权值. 枚举最后一个拿走的数a[k],状态转移方程为d(i, j) = min{ d(i, k) + d(k, j) ...
- POJ 3042 区间DP(费用提前计算相关的DP)
题意: 思路: f[i][j][1]表示从i到j的区间全都吃完了 现在在j点 变质期最小是多少 f[i][j][0]表示从i到j的区间全都吃完了 现在在i点 变质期最小是多少 f[i][j][0]=m ...
随机推荐
- SQL SERVER IN参数化处理
方法一. CREATE TABLE [dbo].[Users] ( Id INTEGER IDENTITY(1, 1) PRIMARY KEY , Name NVARCHAR(50) NOT NULL ...
- windows下php开发环境的搭建
环境搭建软件组合为:Apache2.2.9+mysql5.2.32+php5.2.6 下载地址如下 http://download.csdn.net/detail/xttxqjfg/5670455 ...
- Leetcode_191_Number of 1 Bits
本文是在学习中的总结.欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44486547 Write a function that ...
- nyoj 228 士兵杀死(五岁以下儿童)【树状数组】
分析:这个问题问的是,因为它是一个单独的更新.因此,让我们更新,然后在c[i]表现为1~i之间,还原之后看起来像一个. #include <cstdio> #include <cst ...
- HashMap两种类型
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("d", 2); ma ...
- 《反project核心原则》说明
致亲爱的中国读者: 大家好 !我是<逆向project核心原理> 作者 李承远(ReverseCore). (韩文博客地址:www.reversecore.com) 首先.非常高兴我的 ...
- 区域及分离、Js压缩、css、jquery扩展
后台管理区域及分离.Js压缩.css.jquery扩展 本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做 ...
- 【程序员联盟】官网上线啦!coderunity.com
内容简介 欢天喜地,[程序员联盟]官网上线咯(此处应该有鸡蛋丢过来...) [程序员联盟]官网 大家也许会问:“这几天小编都没出文章,跑哪里happy去啦?是不是偷懒去了?” 小编:“臣妾冤枉啊.” ...
- 乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
原文:乐在其中设计模式(C#) - 提供者模式(Provider Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 提供者模式(Provider Pattern) 作者:weba ...
- App设计相关网站
http://sketch.im/ 设计素材 principle 动效软件 http://principleformac.com/ 官网 http://principlecn.com/ 中文网