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

本文共 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

你可能感兴趣的文章
Android-Universal-Image-Loader --LruDiscCach
查看>>
Open Spring Board
查看>>
GrabKit
查看>>
MADismissiveTextView
查看>>
Android 滑动效果入门篇(一)—— ViewFlipper
查看>>
godaddy使用DNSPod解析域名
查看>>
repo - contains uncommitted changes
查看>>
php 删除文件夹内所有文件
查看>>
redhat更新yum源
查看>>
动态语言 静态语言 强类型语言 弱类型语言
查看>>
JavaScript Getter And Setter
查看>>
Hadoop2.x下安装HBase
查看>>
IDEA自动编译不用每次make
查看>>
iOS launch启动界面全屏
查看>>
apps被拒绝的各种理由以及翻译
查看>>
jquery checkbox 取值
查看>>
svg动画元素【1】:感性认识
查看>>
js弹出qq对话框
查看>>
浅谈神经网络(神经网络篇)
查看>>
spring boot项目依赖另外一个spring boot项目打包失败的解决方式
查看>>