博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ-15:括号匹配(二)
阅读量:5088 次
发布时间:2019-06-13

本文共 1683 字,大约阅读时间需要 5 分钟。

内存限制:64MB 时间限制:1000ms 特判: No

通过数:54 提交数:158 难度:6

题目描述:

给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。

如:
[]是匹配的
([])[]是匹配的
((]是不匹配的
([)]是不匹配的

输入描述:

第一行输入一个正整数N,表示测试数据组数(N<=10)

每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100

输出描述:

对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行

样例输入:
4
[]
([])[]
((]
([)]
样例输出:
0
0
3
2

思路

dp[i][j]dp[i][j]dp[i][j]储存iiijjj位置需要添加括号的数量

因为要找最小的次数,所以给dp[i][j]dp[i][j]dp[i][j]的初始值可以设为字符串的长度(足够大就可以),当i=ji=ji=j的时候,至多需要111个括号就能匹配了,所以初始值为111
如果当前iiijjj位置的括号可以匹配,那么[i,j][i,j][i,j]之间需要的括号数和[i+1,j−1][i+1,j-1][i+1,j1]的相同,所以dp[i][j]=dp[i+1][j−1]dp[i][j]=dp[i+1][j-1]dp[i][j]=dp[i+1][j1]
然后查询[i,j][i,j][i,j]之间需要的最少括号数,dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])

AC代码

/*************************************************************************    > File Name: 15.cpp    > Author: WZY    > School: HPU     > Created Time: 2019年01月21日 15:18:59 ************************************************************************/#include
#define ll long long#define ull unsigned long long#define ms(a,b) memset(a,b,sizeof(a))#define pi acos(-1.0)#define INF 0x7f7f7f7fconst double E=exp(1);const int maxn=1e3+10;const int mod=1e9+7;using namespace std;char ch[maxn];// dp[i][j]表示从i到j位置匹配所需要添加的括号数int dp[maxn][maxn];bool check(char a,char b){
if((a=='['&&b==']')||(a=='('&&b==')')) return true; else return false;}int main(int argc, char const *argv[]){
ios::sync_with_stdio(false); int t; cin>>t; while(t--) {
cin>>ch; int l=strlen(ch); for(int i=0;i
=0;i--) {
for(int j=i+1;j

转载于:https://www.cnblogs.com/Friends-A/p/10324306.html

你可能感兴趣的文章
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>
<s:iterator>的status
查看>>
C++入门--1.0输入输出
查看>>
让搭建在Github Pages上的Hexo博客可以被Google搜索到
查看>>
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段...
查看>>
在WPF控件上添加Windows窗口式调整大小行为
查看>>
背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
查看>>
打开3389
查看>>
React学习记录
查看>>
nginx常见内部参数,错误总结
查看>>
对象与类
查看>>
《奸的好人2》财色战场----笔记
查看>>
BZOJ 1834网络扩容题解
查看>>
bzoj1878
查看>>