uva 1626 Brackets sequence
//
// 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相关推荐
- uva 1626 - Brackets sequence
// // main.cpp // uva 1626 - Brackets sequence/*这一题应该是经典的矩阵类似问题.显然 需要使用两个变量来表示最终的结果.设 dp[i][j]表示第i个位 ...
- UVA - 1626 Brackets sequence
题目链接 给你一个括号序列,输出一个前后括号都匹配的补全序列,且补的字符尽量少. 对一个串s来说,只会有两种情况:1.(t)或[t]转移到t 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 ...
- uva 1626——Brackets sequence
题意:定义满足 1.空序列 2.()(X)及括号和其括起来的合法序列 3.[]要求和()相同 都是合法的串. 然后给定一段序列,求添加最小的()或[]使得序列合法. 思路: 区间dp.以前做过用堆栈来 ...
- UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)
整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...
- COJ-1271 Brackets Sequence
斌牛出的校赛题 1271: Brackets Sequence Time Limit: 1 Sec Memory Limit: 128 MB Submit: 92 Solved: 36 [Subm ...
- UVA1626 / ZOJ1463 Brackets sequence 区间DP
简单区间DP (有空串... ...) Brackets sequence Time Limit: 4500MS Memory Limit: Unknown 64bit IO Format: ...
- POJ 1141 Brackets Sequence(动态规划)
题目大意 给你一个括号串(包括'(',')','[',']'),长度不超过 100,问你怎么添加最少的括号,使得这个括号串是合法的,输出添加括号后的合法括号串 做法分析 以长度划分阶段,定义状态:f[ ...
- UVa 1626 (输出方案) Brackets sequence
正规括号序列定义为: 空序列是正规括号序列 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 如果A和B都是正规括号序列,则AB也是正规括号序列 输入一个括号序列,添加尽量少的括号使之成为正规 ...
最新文章
- 分类算法:决策树(C4.5)
- CCNA200-120章节关系
- HashSet.contains
- minute教会你shell
- 物联网安全有哪些注意事项
- ZZULIOJ 1083: 数值统计(多实例测试)
- 读取CSV文件并将值存储到数组中
- 阿里云服务器Centos7 安装 pycuda报错:Could not build wheels for pycuda which use PEP 517 and cannot be install
- 刷题记录 kuangbin带你飞专题九:连通图
- Head First Java习题练习(二)
- 修改版本名称及手机型号
- 浅谈互联网寒冬与经济形势
- 【MindSpore易点通】一站式指南
- C# 打印小票 POS
- MySQL表字段类型哪些
- Manifest merger failed问题:tools:replace=android:theme和tools:replace=android:icon
- 用java简单写一个信息管理系统(尚硅谷项目二)
- NST1001温度传感器驱动-FPGA
- 如何在一张A4纸上合并打印多张发票
- base64、图片相互转
热门文章
- truck 用法java_编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。...
- 都在说测试左移和右移,只有这篇文章说明白了
- Unity UGUI图集打包与动态使用(TexturePacker)
- 时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?
- 【CVPR智慧城市挑战赛】无监督交通异常检测,冠军团队技术分享
- 全功能音视频互动开发平台
- Flutter学习(一)
- python3网络爬虫:爬取堆糖照片
- django改变用户头像
- 关于JS的一些面试题