简单的dp

忘了\n,调了半天(目测不是第一次了)

直接贴代码:

#include<cstdio>

#include<cstring>

using namespace std;

char s[120];

int dp[120][120]={0};

int min(int x,int y){

return (x>y)?y:x;

}

void solve(int x,int y){

if(dp[x][y]==0){

for(int i=x;i<=y;i++)

printf("%c",s[i]);

return;

}

if(y==x){

if(s[x]=='(' || s[x]==')')printf("()");

if(s[x]=='[' || s[x]==']')printf("[]");

return;

}

if((s[x]=='(' && s[y]==')' || s[x]=='[' && s[y]==']') && dp[x][y]==dp[x+1][y-1]){

printf("%c",s[x]);

solve(x+1,y-1);

printf("%c",s[y]);

return;

}

for(int i=x;i<y;i++)

if(dp[x][y]==dp[x][i]+dp[i+1][y]){

solve(x,i);

solve(i+1,y);

return;

}

return;

}

int main(){

gets(s);

int l=strlen(s);

for(int i=0;i<l;i++)dp[i][i]=1;

for(int i=1;i<l;i++)

for(int j=0;j<l-i;j++){

int a=j,b=j+i;

dp[a][b]=200;

if(s[a]=='(' && s[b]==')' || s[a]=='[' && s[b]==']')dp[a][b]=dp[a+1][b-1];

for(int k=a;k<b;k++)

dp[a][b]=min(dp[a][b],dp[a][k]+dp[k+1][b]);

}

/*     for(int i=0;i<l;i++){

for(int j=0;j<l;j++)

printf("%d ",dp[i][j]);

printf("\n");

}*/

solve(0,l-1);

printf("\n");

return 0;

}

poj 1141的更多相关文章

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

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

  2. poj 1141 Brackets Sequence (区间dp)

    题目链接:http://poj.org/problem?id=1141 题解:求已知子串最短的括号完备的全序列 代码: #include<iostream> #include<cst ...

  3. poj 1141 Brackets Sequence(区间DP)

    题目:http://poj.org/problem?id=1141 转载:http://blog.csdn.net/lijiecsu/article/details/7589877 定义合法的括号序列 ...

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

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

  5. POJ #1141 - Brackets Sequence - TODO: POJ website issue

    A bottom-up DP. To be honest, it is not easy to relate DP to this problem. Maybe, all "most&quo ...

  6. 区间DP POJ 1141 Brackets Sequence

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29520   Accepted: 840 ...

  7. POJ 1141 经典DP 轨迹打印

    又几天没写博客了,大二的生活实在好忙碌啊,开了五门专业课,每周都是实验啊实验啊实验啊....我说要本月刷够60题,但好像完不成了,也就每天1题的样子.如今写动规还是挺有条理的,包括这道需要打印轨迹,其 ...

  8. poj 1141 区间dp+递归打印路径

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30383   Accepted: 871 ...

  9. POJ 1141 Brackets Sequence(DP)

    题目链接 很早 很早之前就看过的一题,今天终于A了.状态转移,还算好想,输出路径有些麻烦,搞了一个标记数组的,感觉不大对,一直wa,看到别人有写直接输出的..二了,直接输出就过了.. #include ...

随机推荐

  1. Java面向对象 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  2. 使用JS实现前端缓存

    在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了.对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极 ...

  3. button

  4. linux vi基本操作

    在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程. 1.VI的三种命令模式  1)Command(命令)模式,用于输入命令:  2)Insert(插入)模式,用于插入文本:  ...

  5. Linux解压命令大全

    引用网址: http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:t ...

  6. js实现点击修改按钮之后单元格变成可编辑状态

    主要实现原理: 每一行有一个修改按钮 点击修改之后,获取行对象,通过行对象再获取行中单元格数组.然后把每一个单元格中的innerHTML替换成input输入框,并赋值value=原来单元格中的内容,鼠 ...

  7. html,body的关系

    先上一张关系图 最底下的一个是画布,往上一层是html结构,再往上一层是body结构 默认情况下html,body的height都是0,你给这两个元素分别加个边框就能看出来,要特别注意的是加背景颜色是 ...

  8. 状态栏消息提示——使用Notification

    什么是Notification Notification用于在状态栏显示信息.这些信息一般来源于app的消息推送,或应用的一些功能控制(如播放器) Notification的两种视图 普通视图 借用官 ...

  9. 【51Nod 1622】【算法马拉松 19C】集合对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...

  10. hover 变内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...