//
//  main.cpp
//  uva   1626 - Brackets sequence/*这一题应该是经典的矩阵类似问题。显然 需要使用两个变量来表示最终的结果。设 dp[i][j]表示第i个位置到第j个位置变成合法形式需要添加的字符数。注意题目中的合法形式,1-->(A),2-->[A] , 3-->AB 。三种。这里  1.如果形式1或者2.则有  dp[i][j] = min(dp[i][j] , dp[i+1][j-1]) .2.如果是形式3.则有  dp[i][j] = min(dp[i][j] , dp[i][k] + dp[k+1][j]) ,其中k>=i ,k < j ;同时得注意 在递推时,如论如何都要 进入到情况2.因为即使满足形式1和2,不一定是所需添加的字母最少的情况,例如:   ()([])还有就是递推的方向问题。当i== j 时 ,dp[i][i] = 1 ;注意i < j .放到矩阵里就是右上角的矩阵。再者就是 递推式。递推式要求要先求出同一行的前面的值,还用同一列下面的值。所以地推方向可以为  i从 n --> 0 ;j从0-->n.*/#include <iostream>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<vector>
#include <string.h>
#include <algorithm>
#include <set>
#include <map>
#include <cstdio>
#define ll long long
using namespace std ;int d[110][110] ;
char s[110] ;
int match(char c1 , char c2)
{if ((c1 == '('&&c2 == ')')||(c1 == '[' && c2 == ']' )) {return 1 ;}return 0 ;
}
int  min(int a, int b )
{return a > b ? b:a ;
}
void dp(int n)
{for (int i = 0; i < n ; i++) {d[i+1][i] = 0;d[i][i] = 1 ;}for(int i = n -2 ; i > -1;i--){for (int j = i+1; j < n ; j++) {d[i][j] = n   ;if(match(s[i],s[j])) d[i][j] = min(d[i][j] , d[i+1][j-1]) ;for (int k =  i ; k < j ; k++) {d[i][j] = min(d[i][j] , d[i][k] + d[k+1][j]) ;}}}
}
void  print(int i , int j )
{if (i >j ) {return ;}if (i == j ) {if(s[i] == '('||s[i] ==')'){printf("()") ;}else{printf("[]") ;}return ;}if (match(s[i], s[j]))  {if (d[i][j] == d[i+1][j-1]) {printf("%c" ,s[i]) ; print(i+1, j-1) ;printf("%c" , s[j]) ;return ;}}for (int t = i; t< j ; t++) {if (d[i][j] == d[i][t] + d[t+1][j]) {print(i, t) ; print(t+1, j) ;return ;}}
}
int main(int argc, const char * argv[]) {int T ; scanf("%d" ,&T) ;getchar() ;for (int i = 0; i < T; i++) {
//        if (i!=0) {
//            printf("\n") ;
//        }getchar() ;gets(s) ;int len = (int) strlen(s) ;dp(len) ;print(0, len-1) ;printf("\n") ;if(i < T-1){printf("\n") ;}}return 0;
}

uva 1626 - Brackets sequence相关推荐

  1. UVA - 1626 Brackets sequence

    题目链接 给你一个括号序列,输出一个前后括号都匹配的补全序列,且补的字符尽量少. 对一个串s来说,只会有两种情况:1.(t)或[t]转移到t 2.有两个字符,分段转移.为了保证是最小值,一定要考虑情况 ...

  2. 紫书动规 例题9-10 UVA - 1626 Brackets sequence 区间dp

    题目链接: https://vjudge.net/problem/UVA-1626 题意: 题解: dp[i][j]:= i~j需要最少的括号 区间dp: dp[i][j] = min(dp[i][j ...

  3. uva 1626——Brackets sequence

    题意:定义满足 1.空序列 2.()(X)及括号和其括起来的合法序列 3.[]要求和()相同 都是合法的串. 然后给定一段序列,求添加最小的()或[]使得序列合法. 思路: 区间dp.以前做过用堆栈来 ...

  4. uva 1626 Brackets sequence

    // // main.cpp // Richard // // Created by 邵金杰 on 16/7/1. // Copyright © 2016年 邵金杰. All rights reser ...

  5. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  6. COJ-1271 Brackets Sequence

    斌牛出的校赛题 1271: Brackets Sequence Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 92  Solved: 36 [Subm ...

  7. UVA1626 / ZOJ1463 Brackets sequence 区间DP

    简单区间DP (有空串... ...) Brackets sequence Time Limit: 4500MS   Memory Limit: Unknown   64bit IO Format:  ...

  8. POJ 1141 Brackets Sequence(动态规划)

    题目大意 给你一个括号串(包括'(',')','[',']'),长度不超过 100,问你怎么添加最少的括号,使得这个括号串是合法的,输出添加括号后的合法括号串 做法分析 以长度划分阶段,定义状态:f[ ...

  9. UVa 1626 (输出方案) Brackets sequence

    正规括号序列定义为: 空序列是正规括号序列 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 如果A和B都是正规括号序列,则AB也是正规括号序列 输入一个括号序列,添加尽量少的括号使之成为正规 ...

最新文章

  1. wingide的使用方法积累
  2. android 手机号分段_android 手机号分段_android系统实现手机号添加分割符
  3. XAML实例教程系列 – 对象和属性
  4. sql查询百分之20到百分之40的数据_数据库基础学习——SQL语言知识总结(6)
  5. 文件磁盘相关函数[9]-获取当前文件夹 GetCurrentDir
  6. mac地址修改_如何修改手机MAC地址?
  7. 他患“不死癌症” 坐轮椅考上清华并获特等奖学金
  8. oracle 的 dml,Oracle——DML
  9. Dijkstra求最短路 II
  10. 可可托海将打造研学旅游基地促经济发展
  11. 机载激光雷达原理与应用科普(二)
  12. i.MX6ULL驱动开发 | 10 - 修改LCD驱动点亮LCD显示小企鹅logo
  13. 无线ap 热图测试软件,无线AP功能测试
  14. Django创建超级管理员用户步骤
  15. 二值化神经网络——BNN
  16. Deepsort工作原理分析
  17. python提取excel指定关键词的行数据
  18. windows不安装虚拟机如何使用Linux系统作为开发工具?
  19. 【统计学】【2015.09】基于状态空间模型的时间序列预测与插值
  20. python----scatter绘画散点图

热门文章

  1. 【linux命令】Linux du 命令(显示目录或文件的大小)
  2. ROG魔霸新锐2023配置 ROG魔霸新锐2023值得买吗
  3. centos安装unzip
  4. 牧羊人之心怎么在电脑上玩?tcgames 电脑玩手机游戏助手完美适配高清流畅版
  5. 小程序 获取短信验证码 功能实现
  6. 设计模式学习(四):Decorator
  7. Java如何创建不存在的指定路径的文件
  8. spark运行报错Please install psutil to have better support with spilling
  9. opentcs 如何汉化
  10. JVM 第二篇:垃圾收集器以及算法