题目链接

题意 : 给你一串由括号组成的串,让你添加最少的括号使该串匹配。

思路 : 黑书上的DP。dp[i][j] = min{dp[i+1][j-1] (sh[i] == sh[j]),dp[i][k]+dp[k+1][j](i<=k<j)}.输出的时候递归,其实我觉得输出比dp部分难多了。。。。。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4.  
  5. using namespace std ;
  6.  
  7. char sh[] ;
  8. int dp[][] ,mark[][] ;
  9. //dp数组代表的是从i到j需要添加的最少的括号是多少,mark数组代表的是从i到j在mark[i][j]这个位置添加括号可以使得添加的括号数最少
  10.  
  11. void print(int i,int j)
  12. {
  13. if(i > j) return ;
  14. else if(i == j)
  15. {
  16. if(sh[i] == '('||sh[i] == ')')
  17. printf("()") ;
  18. else printf("[]") ;
  19. }
  20. else if(mark[i][j] == -)
  21. {
  22. printf("%c",sh[i]) ;
  23. print(i+,j-) ;
  24. printf("%c",sh[j]) ;
  25. }
  26. else
  27. {
  28. print(i,mark[i][j]) ;
  29. print(mark[i][j]+,j) ;
  30. }
  31. }
  32. int main()
  33. {
  34. while(gets(sh))
  35. {
  36. int len = strlen(sh) ;
  37. memset(dp,,sizeof(dp)) ;
  38. for(int i = ; i < len ; i++)
  39. {
  40. dp[i][i] = ;
  41. }
  42. for(int l = ; l < len ; l ++)//从小区间推出大区间,枚举长度
  43. {
  44. int temp = len - l ;
  45. for(int i = ; i < temp ; i++)
  46. {
  47. int j = i + l ;
  48. dp[i][j] = ;
  49. if((sh[i] == '('&& sh[j] == ')')|| (sh[i] == '['&&sh[j] == ']'))
  50. {
  51. dp[i][j] = dp[i+][j-] ;
  52. mark[i][j] = - ;
  53. }
  54. for(int k = i ; k < j ; k++)
  55. {
  56. int temp1 = dp[i][k] + dp[k+][j] ;
  57. if(dp[i][j] >= temp1)
  58. {
  59. dp[i][j] = temp1 ;
  60. mark[i][j] = k ;
  61. }
  62. }
  63. }
  64. }
  65. print(,len-) ;
  66. puts("") ;
  67. }
  68. return ;
  69. }

URAL 1183 Brackets Sequence(DP)的更多相关文章

  1. Ural 1183 Brackets Sequence(区间DP+记忆化搜索)

    题目地址:Ural 1183 最终把这题给A了.. .拖拉了好长时间,.. 自己想还是想不出来,正好紫书上有这题. d[i][j]为输入序列从下标i到下标j最少须要加多少括号才干成为合法序列.0< ...

  2. 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence

    题目传送门 /* 记忆化搜索(DP+DFS):dp[i][j] 表示第i到第j个字符,最少要加多少个括号 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 当 ...

  3. URAL 1183 Brackets Sequence

    URAL 1183 思路:区间dp,打印路径,详见http://www.cnblogs.com/widsom/p/8321670.html 代码: #include<iostream> # ...

  4. [原]POJ1141 Brackets Sequence (dp动态规划,递归)

    本文出自:http://blog.csdn.net/svitter 原题:http://poj.org/problem?id=1141 题意:输出添加括号最少,并且使其匹配的串. 题解: dp [ i ...

  5. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  6. URAL 1586 Threeprime Numbers(DP)

    题目链接 题意 : 定义Threeprime为它的任意连续3位上的数字,都构成一个3位的质数. 求对于一个n位数,存在多少个Threeprime数. 思路 : 记录[100, 999]范围内所有素数( ...

  7. cf13C Sequence(DP)

    题意: N个数.a1...aN. 对于每个数而言,每一步只能加一或减一. 问最少总共需要多少步使得新序列是非递减序列. N (1 ≤ N ≤ 5000) 思路: *一个还不知道怎么证明的结论(待证): ...

  8. URAL 1146 Maximum Sum(DP)

    Given a 2-dimensional array of positive and negative integers, find the sub-rectangle with the large ...

  9. Arithmetic Sequence(dp)

    Arithmetic Sequence Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 51  Solved: 19[Submit][Status][We ...

随机推荐

  1. flask-cors 实现跨域请求

    安装:pip install -U flask-cors from flask import Flask from flask.ext.cors import CORS app = Flask(__n ...

  2. iOS开发的22个奇谲巧技

    结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁. 1. TableView不显示没内容的Cell怎么办? 类似于图1 ...

  3. .Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(二)级联删除和触发器

    1.建立级联删除 Mr.E的级联删除并非数据库自带那个级联删除,而是Mr.E自带的,所以它能触发你C#里面编写的触发器. 首先,建立级联删除关系,如下图有两个表,UserInfo和UserDocume ...

  4. homework-01 "最大子数组之和"的解决过程

    看到这个题目,我首先想到就是暴力解决 求出所有的子数组的和,取出最大值即可 但其中是可以有优化的 如 子数组[3:6]可以用[3:5]+[6]来计算 即可以将前面的计算结果保留下来,减少后面的重复计算 ...

  5. shell 简介

    shell 简介 shell既是一种命令语言,也是一种程序设计语言.作为命令语言,它交互式地解析和执行用户输入的命令:作为程序设计语言,他定义了各种变量和参数,并提供了许多的高级语言才具有的控制结构, ...

  6. Delphi 调试日子 - 莫名其妙的堆溢出

    这个是个很有意思的事情,这一个成熟的模板上更改,同样的属性,同样的方法,新的组件在载入过程中就是报错. “Stack overflow” 因为有初始化过程,担心是不是那个地方有问题,由于是在属性赋值过 ...

  7. HTML浅学入门---基础知识 (1)<基本规则>

    HTML: 结构化文档,超文本标记语言 (一)四条基本规则 1.每个开始标记必须和结束标记配套使用.// <tag>    </tag> 2.文档中必须包含唯一的打开和关闭标记 ...

  8. Servlet主要的作用

    1,收集Request传递过来的参数: 2,把这些参数组织成模型需要的类型: 3,调用模型进行逻辑功能处理: 4,选择下一个页面,先准备好一个页面需要的数据,然后转向下一个页面.

  9. MySQL中表格各页面的注意和操作项

  10. 4.C#基础篇-->变量

    一.前言 变量的类型划分即内存中的存放位置如图: 变量的生命周期如图: