poj1141 区间dp+路径
//Accepted 176 KB 47 ms
//感谢大神们为我们这群渣渣铺平前进的道路!!
//用scanf("%s",s)!=EOF WA到死
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
;
;
char s[imax_n];
int dp[imax_n][imax_n];
int n;
int min(int a,int b)
{
return a<b?a:b;
}
int isMatch(char ch1,char ch2)
{
;
;
;
}
void Dp()
{
memset(dp,,sizeof(dp));
;i<=n;i++)
{
dp[i][i]=;
}
;i<n;i++)
{
],s[i])) dp[i][i+]=;
else
dp[i][i+]=;
}
;l<=n;l++)
{
;i<=n;i++)
{
;
if (j>n) break;
dp[i][j]=inf;
],s[j-])) dp[i][j]=dp[i+][j-];
]==]==][j]+);
]==]==]+);
for (int k=i;k<j;k++)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
}
void output(int i,int j)
{
//printf("s[%d]=%c,s[%d]=%c\n",i,s[i-1],j,s[j-1]);
if (i>j) return ;
)
{
for (int k=i;k<=j;k++)
printf(]);
return ;
}
&& i==j)
{
]==]==')')
printf("()");
]==]==']')
printf("[]");
return ;
}
][j-] && isMatch(s[i-],s[j-]))
{
printf(]);
output(i+,j-);
printf(]);
return ;
}
][j]+ && (s[i-]==]=='['))
{
printf(]);
output(i+,j);
]=='(')
printf(")");
else
printf("]");
return ;
}
]+ && (s[j-]==]==']'))
{
]==')')
printf("(");
else
printf("[");
output(i,j-);
printf(]);
return ;
}
for (int k=i;k<j;k++)
][j])
{
output(i,k);
output(k+,j);
return ;
}
return ;
}
int main()
{
//while (cin>>s)
{
scanf("%s",s);
n=strlen(s);
Dp();
output(,n);
printf("\n");
}
;
}
poj1141 区间dp+路径的更多相关文章
- UVA 1626 区间dp、打印路径
uva 紫书例题,这个区间dp最容易错的应该是(S)这种匹配情况,如果不是题目中给了提示我就忽略了,只想着左右分割忘记了这种特殊的例子. dp[i][j]=MIN{dp[i+1][j-1] | if( ...
- 区间dp模型之括号匹配打印路径 poj(1141)
题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...
- POJ 1141 Brackets Sequence(区间DP, DP打印路径)
Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- Tinkoff Challenge - Elimination Round D. Presents in Bankopolis(区间DP)
http://codeforces.com/contest/793/problem/D 题意:给出一些点和他们之间的距离,是有向的,这些点从1~n顺序排列,现在选出k个点组成一条路径,使他们之间的距离 ...
- 区间DP的摸索
(poj真的炸了,以下代码可能有误) 按照下面这个做题顺序,对区间DP不再那么迷了 LOJ1422 是 dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k][j])而不是d ...
- 区间DP 青蛙的烦恼
池塘中有n片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在1号荷叶上,小青蛙想通过最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一片荷叶上. 输入数据(fr ...
- 区间DP UVA 10453 Make Palindrome
题目传送门 /* 题意:问最少插入多少个字符使得字符串变成回文串 区间DP:dp[i][j]表示[l, r]的字符串要成为回文需要插入几个字符串,那么dp[l][r] = dp[l+1][r-1]; ...
- 洛谷 P1220 关路灯 (贪心+区间dp)
这一道题我一直在想时间该怎么算. 看题解发现有个隐藏的贪心. 路径一定是左右扩展的,左右端点最多加+1(我竟然没发现!!) 这个性质非常重要!! 因此这道题用区间dp f[i][j]表示关完i到j的路 ...
随机推荐
- ios AudioQueueStart returns -50 录音失败问题
ios AudioQueueStart returns -50 录音失败问题 使用iOS录音时,如果在应用的别处有语音的操作,可能会出现上述问题: 导致录音机打开失败!无法录音,并且 AudioQue ...
- location.pathname;outline:medium;undefined不能加引号
1. location.pathname -- 返回URL的域名后的部分.例如 http://www.dreamdu.com/xhtml/ 返回/xhtml/ 2. 判断某个名称为undefined时 ...
- 【软件使用】TortoiseSVN版本管理软件使用简单说明
TortoiseSVN版本管理软件使用简单说明 很多时候在写一个小的项目不想使用github等工具,只想简单在本地搭建一个版本管理器.那么TortoiseSVN就非常适合. 第一步:下载Tortois ...
- hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- java作业——整数相加
设计思路:由于命令行参数都是字符串,所以解决问题的关键在于字符串和整数之间的转化.首先定义数组,让所要相加的数组成一个数组,然后实现数组的字符串转化为整数,最后相加输出就行了. 程序流程图: 源代码: ...
- 数据库索引<二> 补充前篇
你要准备的软件有: 最新版 Rsync for windows 服务端:cwRsync_Server_2.1.5_Installer.zip 客户端:cwRsync_2.1.5_Installer.z ...
- HDU 1864
最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- php验证用户名是否以字母开头与验证密码
验证用户名是否以字母开头与验证密码只能为数字和字母的组合代码三款三种常用验证函数 验证邮箱地址格式 验证密码只能为数字和字母的组合 验证用户名是否以字母开头代码哦,这是用户注册时或提交表单时会用的哦 ...
- C#伪静态实现的方法
在asp.net开发网站的时候,我们经常会用到伪静态,好处是可以隐藏真实的路径,提高网站的安全性,在官网等展示网站希望对搜索引擎友好,提高搜索排名:或者在涉及到模板开发都会用到伪静态.下面讲解下平时用 ...
- 0302IT行业就业&软件工程之我所思和所想
阅读以下文章 http://www.thea.cn/news/terminal/9/9389.html http://www.shzhidao.cn/system/2015/09/22/0102610 ...