7-3 优美的括号序列
题目描述:
某日,小明特别无聊,就想找点东西玩,于是他发现括号()特别好玩,而且新学会了一项技能,
将一对小括号(),插入到一个括号序列中,其中插入的规则是,左括号'('的位置要小于右括号')'的位置,不要求插入的左右括号相邻,
例如以下,为了方便区分,我们拿ab代表原括号序列
将()插入到()中可形成()ab (a)b (ab) a()b a(b) ab()等等序列,其中a代表原括号序列的左括号,b代表原括号序列的右括号。
小明认为一个括号序列是一个优美的序列当且仅当这个括号序列可以被如下方法构造出来:
一开始有一个空串,然后执行0次或者若干次操作,每次操作将()插入到当前的括号序列中。
根据上面的定义:() , (()) , (()())都是优美的括号序列,(() , )( , ()))都不是优美的括号序列
输入格式:
多组输入
每行输入给定一个仅由'(',')'组成的括号序列,长度小于等于1000
题目保证没有空串
输出格式:
对于每个输入输出一行,若当前的括号序列是优美的,则输出"YES"(不含引号)
否则输出"NO"(不含引号)
输入样例:
()
(())
(()())
()()
(()
)(
()))
输出样例:
YES
YES
YES
YES
NO
NO
NO
思路描述:
对于括号匹配,有两个符号,'(’和‘)’,我们首先要思考有几种不合法的形式,')'在前,符号数量不匹配,')'数量在中间就多于'(',我们可以令一个变量count=0,当遇到'('是,count++,当遇到')'时,count--,当count<0时,就已经证明不合法,就输出NO,然后结束运行,如果在最后count=0,则合法,输出YES,否则,输出NO。
代码如下:
#include <bits/stdc++.h>using namespace std;
char s[1000];int main(){while(~scanf("%s",s)){int count=0;int judge=1;int i;for(i=0;i<strlen(s);i++){if(s[i]=='(')count++;else if(s[i]==')')count--;if(count<0){printf("NO\n");judge=0;break; }}if(count==0&&judge==1)printf("YES\n");else if(judge==1&&count!=0)printf("NO\n");}return 0;
}
7-3 优美的括号序列相关推荐
- bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治
这题真是十分难写啊 不管是点分治还是括号序列都有一堆细节.. 点分治:时空复杂度$O(n\log^2n)$,常数巨大 主要就是3个堆的初始状态 C堆:每个节点一个,为子树中的点到它父亲的距离的堆. B ...
- 2016百度实习编程题:括号序列
不知如何解决 1.感觉贪心或者动态规划,不知道如何解决 2.做过生成合法括号序列的题目,想到用DFS补成合法的括号,然而没有成功
- UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)
整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...
- [ Nowcoder Contest 165 #D ] 合法括号序列
\(\\\) \(Description\) 键盘上有三个键,敲击效果分别是: 在输出序列尾部添加一个左括号 在输出序列尾部添加一个右括号 删除输出序列尾部的第一个元素,若输出序列为空,则什么都不发生 ...
- BZOJ4350: 括号序列再战猪猪侠
Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列 ...
- 常考数据结构与算法:括号序列
题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[] ...
- BZOJ2209: [Jsoi2011]括号序列
BZOJ2209: [Jsoi2011]括号序列 Description Input 输入数据的第一行包含两个整数N和Q,分别表示括号序列的长度,以及操作的个数. 第二行包含一个长度为N的括号序列. ...
- 2020\Simulation_2\4.括号序列
[问题描述] 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多少种? [答案提交] 这是一道结果填空的题, ...
- [Jobdu] 题目1337:寻找最长合法括号序列
题目描述: 给你一个长度为N的,由'('和')'组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...
最新文章
- 台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression
- boost::safe_numerics模块实现检测到错误表达式评估的测试程序
- Spring 三种注入方式
- mysql删除delete语句
- ajax时间控件,带有ajax的JQuery中的插件datetimepicker出错
- java中输出打印 num_System.out.print。 如何将打印输出编号?(JAVA)
- linux系统下虚拟机的安装
- 修改域的NetBIOS名称
- 几维安全:千锤百炼,锻造移动游戏安全防护黄金铠甲
- HDU 5834 Magic boy Bi Luo with his excited tree 树形DP
- J2EE学习笔记-第二章(Web应用初步)
- ubuntu FreeRadius服务器安装
- 计算机操作系统第四版第一章知识点归纳总结
- 双网卡实现同时上内外网方法
- 寻星计划|Apache Doris 社区4月职位广场,IDG资本、Shopee 多个岗位
- 全流程东方时尚C1考试经历
- ARPG游戏技能系统设计
- 基于Qt的网络五子棋游戏对战
- binlog2sql 恢复工具使用
- [Solved] Splunk: Cannot get username when all users are selected“
热门文章
- 2022年危险化学品经营单位主要负责人复习题及答案
- couchdb 视图操作_CouchDB简单应用
- 5、数据库的基本知识
- 2012年敏捷个人俱乐部(北京)实践团开始报名了......
- Docket学习2《docker安装nginx、安装tomcat、安装Centos7、容器导入导出、镜像上传到仓库》
- android 判断设备是手机还是平板,android – 以编程方式确定设备是手机还是平板电脑...
- php upstom,ups电源的作用是什么?
- python语言的数据类型的例题_Python_数据类型练习题
- 2022-2028全球及中国数字集成电路行业研究及十四五规划分析报告
- python爬虫实验报告怎么写_[Python]新手写爬虫全过程(转)