poj1141 Brackets Sequence 动态规划 输出路径
来源:互联网 发布:apache gzip压缩 编辑:程序博客网 时间:2024/06/06 18:51
分析:
1. s形如(s')后则[s']:只需要把s'变成规则的,则s就是规则了。
2. s形如(s':先把s'变成规则的,在把最后一个加")", 则s就是规则的了。
3. s形如[s'或者s')后者s']:同上。
4. 只要序列长度大于1, 都可以把S分成两部分Si。。。Sk, Sk+1。。。Sj, 分别变成规则序列,则连在一起
也是规则的序列。
对于程序一:我觉得是用到了第四条性质,由于计算f[i,j]需要知道f[i + 1, j], f[i, j - 1] 和d[i + 1, j - 1], 所以
由自底向上方法求出
程序一:
#include "iostream"using namespace std;const int size = 110;char st[size];//接收数组int f[size][size];//f[i][j]存储添加的最少值int v[size][size];//f[i][j]中的k值, 就是让两边都为规则的情况//输出路径void output(int s, int e){if(s > e)return;else if(s == e){if (st[s] =='('|| st[s] ==')')cout<<"()";elsecout<<"[]";}else if (v[s][e] ==-1){cout<<st[s];output(s + 1, e - 1);cout<<st[e];return;}else{output(s, v[s][e]);output(v[s][e] + 1, e);}}int main(){//freopen("in.txt", "r", stdin);gets(st);memset(f, -1, sizeof(f));memset(v, -1, sizeof(v));int i, j, k, len = strlen(st);for(i = 0; i < len; i++){f[i][i] = 1;f[i + 1][i] = 0;}//自底向上进行dpfor(i = 1; i < len; i++){for(j = 0; j < len - i; j++){int s = j, e = j + i;if((st[s] == '(' && st[e] == ')') || (st[s] == '[' && st[e] == ']'))f[s][e] = f[s + 1][e - 1];for(k = s; k < e; k++)if(f[s][e] > f[s][k] + f[k][e] || f[s][e] == -1){f[s][e] = f[s][k] + f[k + 1][e];v[s][e] = k;}}}output(0, len - 1);cout<<endl;return 0;}
- poj1141 Brackets Sequence 动态规划 输出路径
- POJ1141 ZOJ1463 Brackets Sequence 经典动态规划 区间DP
- POJ1141 Brackets Sequence (dp动态规划,递归)
- POJ1141 Brackets Sequence
- poj1141 Brackets Sequence
- POJ1141--Brackets Sequence--DP
- POJ1141 Brackets Sequence
- POJ1141 Brackets Sequence
- POJ1141 Brackets Sequence
- poj1141 Brackets Sequence
- poj1141 Brackets Sequence
- POJ1141 Brackets Sequence(DP)
- Brackets Sequence poj1141
- POJ1141-Brackets Sequence
- poj1141 Brackets Sequence
- poj1141 Brackets Sequence(区间dp记录路径问题)
- ural1183&&poj1141 Brackets Sequence(区间DP+记录路径)
- poj1141 Brackets Sequence 括号序列
- OCR系统性能好坏的主要指标
- Problem B +树状数组
- hdu 2203(KMP)
- Ubuntu学习笔记-重装winxp后恢复Grub或ntloader
- 流程控制语句
- poj1141 Brackets Sequence 动态规划 输出路径
- Struts2 验证码图片实例
- 基于MinGW和Msys使用QT、ACE QT与ACE在TCP服务端设计方面的比对
- 2281
- 《12年资深DBA教你Oracle开发与优化——性能优化部分》-Oracle数据完整性和锁机制
- 面向对象的7个设计原则
- 直接拿来用!最火的Android开源项目
- python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
- JAVA中获取当前系统时间