//
//  main.cpp
//  Richard
//
//  Created by 邵金杰 on 16/7/1.
//  Copyright © 2016年 邵金杰. All rights reserved.
//#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100+10;
int T,n;
char S[maxn];
int f[maxn][maxn];
bool match(char a,char b)
{return (a=='('&&b==')')||(a=='['&&b==']');
}
void dp()
{for(int i=0;i<n;i++){f[i+1][i]=0;f[i][i]=1;}for(int i=n-2;i>=0;i--){for(int j=i+1;j<n;j++){f[i][j]=n;if(match(S[i],S[j])) f[i][j]=min(f[i][j],f[i+1][j-1]);for(int k=i;k<j;k++){f[i][j]=min(f[i][j],f[i][k]+f[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 ;}int ans=f[i][j];if(ans==f[i+1][j-1]&&match(S[i],S[j])){printf("%c",S[i]);print(i+1,j-1);printf("%c",S[j]);return ;}for(int k=i;k<j;k++){if(ans==f[i][k]+f[k+1][j]){print(i,k);print(k+1,j);return ;}}
}
void readline(char *S)
{fgets(S,maxn,stdin);
}
int main()
{readline(S);sscanf(S,"%d",&T);readline(S);while(T--){readline(S);n=(int)strlen(S)-1;memset(f,-1,sizeof(f));dp();print(0,n-1);printf("\n");if(T) printf("\n");readline(S);}return 0;
}

uva 1626 Brackets sequence相关推荐

  1. uva 1626 - Brackets sequence

    // // main.cpp // uva 1626 - Brackets sequence/*这一题应该是经典的矩阵类似问题.显然 需要使用两个变量来表示最终的结果.设 dp[i][j]表示第i个位 ...

  2. UVA - 1626 Brackets sequence

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

  3. 紫书动规 例题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 ...

  4. uva 1626——Brackets sequence

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

  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. 分类算法:决策树(C4.5)
  2. CCNA200-120章节关系
  3. HashSet.contains
  4. minute教会你shell
  5. 物联网安全有哪些注意事项
  6. ZZULIOJ 1083: 数值统计(多实例测试)
  7. 读取CSV文件并将值存储到数组中
  8. 阿里云服务器Centos7 安装 pycuda报错:Could not build wheels for pycuda which use PEP 517 and cannot be install
  9. 刷题记录 kuangbin带你飞专题九:连通图
  10. Head First Java习题练习(二)
  11. 修改版本名称及手机型号
  12. 浅谈互联网寒冬与经济形势
  13. 【MindSpore易点通】一站式指南
  14. C# 打印小票 POS
  15. MySQL表字段类型哪些
  16. Manifest merger failed问题:tools:replace=android:theme和tools:replace=android:icon
  17. 用java简单写一个信息管理系统(尚硅谷项目二)
  18. NST1001温度传感器驱动-FPGA
  19. 如何在一张A4纸上合并打印多张发票
  20. base64、图片相互转

热门文章

  1. truck 用法java_编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。...
  2. 都在说测试左移和右移,只有这篇文章说明白了
  3. Unity UGUI图集打包与动态使用(TexturePacker)
  4. 时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?
  5. 【CVPR智慧城市挑战赛】无监督交通异常检测,冠军团队技术分享
  6. 全功能音视频互动开发平台
  7. Flutter学习(一)
  8. python3网络爬虫:爬取堆糖照片
  9. django改变用户头像
  10. 关于JS的一些面试题