括号匹配(二)

时间限制:1000 ms  |  内存限制:65535 KB
难度:6

描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。
如:
[]是匹配的
([])[]是匹配的
((]是不匹配的
([)]是不匹配的
输入第一行输入一个正整数N,表示测试数据组数(N<=10)
每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100输出对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行样例输入

4
[]
([])[]
((]
([)]

样例输出

0
0
3
2

区间DP入门题
POJ 2955 只需要改一下输入、然后输出串的总长度-dp[1][n]即可
如果要输出补全后括号序列见 :http://www.cnblogs.com/hate13/p/4064062.html

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
#define INF 0x7fffffff
#define N 110char s[N];
int dp[N][N]; //dp[i][j]是在i~j区间使括号配对的最小添加括号个数int judge(char c1,char c2)
{if(c1=='(' && c2==')') return 1;if(c1=='[' && c2==']') return 1;return 0;
}int main()
{int n,i,j,k,len,T;scanf("%d",&T);while(T--){scanf("%s",s+1);n=strlen(s+1);for(i=1;i<=n;i++){dp[i][i]=1;}for(len=2;len<=n;len++){for(i=1;i<=n-len+1;i++){j=i+len-1;dp[i][j]=INF; //初始化for(k=i;k<j;k++){dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]);}if(judge(s[i],s[j])) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);}}cout<<dp[1][n]<<endl;}return 0;
}

转载于:https://www.cnblogs.com/hate13/p/4063845.html

[NYOJ 15] 括号匹配(二)相关推荐

  1. 457. 括号匹配二

    [题目描述]: 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些 ...

  2. 7-3 括号匹配 (15 分)

    ** 7-3 括号匹配 (15 分) ** 给定一串字符,不超过100个字符,可能包括括号.数字.字母.标点符号.空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入格式: 输入在一行 ...

  3. [ACM_NYOJ_15]括号匹配(二)

    括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[", ...

  4. 数据结构(二)——栈及实现、括号匹配

    一.栈的概念与特点 一种特殊的线性表,它的插入和删除运算均在同一端进行.这一端被称为栈顶,另一端为栈底,插入称为进栈,删除称为出栈.有后进先出的性质.栈顶top相当于顺序表中的size,即元素个数.关 ...

  5. 快速解决工作中遇到经典的括号匹配问题

    问题来源:从缓存中取出的数据没有空格和换行,很难阅读,但又找不到像JSON一样的在线格式化工具.灵机一动,自己写了一个小程序将其格式化. 一.先看效果 1.原始数据长这样,难以阅读 MemCached ...

  6. 【区间dp】uva10003+ uva 1626 括号匹配问题 【有空自己记忆化写一下!!!】

    讲道理,其实我还不是太懂,这个题看到了两种写法 之前大概想的差不多,要这样实现呀: 常规写法,大概n--3 递归写法,稍微好理解一点 好了,接下来自从看了liuchuo的博客我要变身玛丽苏橙色了 题目 ...

  7. python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...

  8. POJ 2955 Brackets(括号匹配一)

    题目链接:http://poj.org/problem?id=2955 题目大意:给你一串字符串,求最大的括号匹配数. 解题思路: 设dp[i][j]是[i,j]的最大括号匹配对数. 则得到状态转移方 ...

  9. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

最新文章

  1. Linux常用开发环境软件-jdk安装
  2. 去某大厂三面总监面,因为迟到了5分钟,面试官当着我的面把简历扔垃圾桶了...
  3. (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)
  4. Downloading the Source
  5. python3.6.0安装教程-CentOS7安装Python3.6
  6. 建站四部曲之前端显示篇(React+上线)
  7. 多线程-单生产单消费模型
  8. oracle mysql 字段_Oracle和MySQL修改字段
  9. unity shader入门精要_Unity Shader 入门(一):渲染流水线
  10. 用c语言编程求分数和,用C语言编程平均分数
  11. 赣州服务器系统,赣州排名P级别服务器厂
  12. 深度学习:正则化方法
  13. Qt学习笔记(十九):QTreeWidget 的常用方法
  14. C#实现简单小说阅读器
  15. ITTAGE分支预测器 “A 64-Kbytes ITTAGE indirect branch predictor”
  16. RTX 4080、RTX4070 Ti 相当于什么水平
  17. C语言每日一练(5月2号)——水仙花数
  18. Python 实现微信测试号情侣纪念消息推送(消息群发)
  19. 使用Maven创建Servlet项目及优化流程
  20. 如何在Linux杀死进程的名字?

热门文章

  1. 关于swift中的懒加载
  2. _java5条件阻塞Condition的应用
  3. Java关键字new和newInstance的区别
  4. 计算机考试忘记备注班级了,2012年计算机二级Access第二十五套上机试题及答案详解...
  5. 语言 ota_小米手表第五次OTA升级:百款新表盘 增加运动语音、振动提醒
  6. HBase数据读取流程解析
  7. (80)ADC采集方法(基于LVDS采集方法)
  8. (50)FPGA数组描述(reg型)
  9. stm32 hal 串口只可以接收到一包数据数据
  10. 01.QT中点击弹出新页面