HPU 1476: 括号括号
1476: 括号括号
时间限制: 3 Sec 内存限制: 128 MB
提交: 305 解决: 61 统计
题目描述
小明今年上大学,在大学里发现有很多同学都女朋友,两人整天都在一起腻歪,小明看到后感觉很孤单,现在,给你一行括号序列,你来判断一下其中的括号是否配对。
输入
多组输入,每一组第一行输入一个数T(0<<N≤≤100),表示有T组测试数据。后面的T行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No。
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
思路
两个循环,i从左往右遍历,j从右往左遍历,当i>=j的时候停止,如果遇到能匹配的括号,将这两个括号变成别的符号,当循环结束后统计括号的个数或者统计不是括号的个数(刚才改变成的符号)。如果括号数为0或者符号数为l,输出“Yes”
AC代码
emmmmm,下面这个代码是错的,数据太水了,就AC了ヽ( ̄▽ ̄)ノ。真正的AC代码在最后
#include<bits/stdc++.h>
#define ll long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
const int maxn=1e6+10;
using namespace std;
char ch[maxn];
int main()
{int n;while(~scanf("%d",&n)){while(n--){scanf("%s",ch);int l=strlen(ch);if(l%2)printf("No\n");else{int flag=0;for(int i=0;i<l;i++){for(int j=l-1;j>=0;j--){if(i>=j)break;if(ch[i]=='('||ch[i]=='['){if((ch[i]=='('&&ch[j]==')')||(ch[i]=='['&&ch[j]==']')){if((j-i)%2){ch[i]='!';ch[j]='!';}elsecontinue;}}}}for(int i=0;i<l;i++){if(ch[i]=='!')flag++;}if(flag==l)printf("Yes\n");elseprintf("No\n");}}}return 0;
}
这个才是AC代码
#include<iostream>
#include<stack>
#include<string>
#include <stdio.h>
using namespace std;
bool judge(string str)
{stack<char>S;while(!S.empty())S.pop();int len=str.length();int i;char temp;for(int i=0;i<len;i++){if(str[i]=='('||str[i]=='[')S.push(str[i]);else{if(S.empty()) return false;temp=S.top();S.pop();switch(str[i]){case ')':{if(temp!='(') return false;continue;}case ']':{if(temp!='[') return false;continue;}}}}if(!S.empty()) return false;return true;
}
int main()
{int ntest;while(scanf("%d",&ntest)!=EOF){string str;while(ntest--){cin>>str;if(judge(str))cout<<"Yes"<<endl;elsecout<<"No"<<endl;}}
return 0;
}
转载于:https://www.cnblogs.com/Friends-A/p/10324432.html
HPU 1476: 括号括号相关推荐
- python显示无效语法怎么处理-python – 无效语法(对于循环括号/括号)
以下代码行输出SyntaxError:无效语法 for (i in range(-WIDTH,WIDTH)): 下一个工作没有错误.我不知道这里应该是什么语法错误.所以我只是出于好奇而问.我猜测括号会 ...
- html大小括号,括号字符.html
括号字符 var res = '1234'.match(/(\d)(\d)(\d)(\d)/); console.log(res); var str = 'Regular Capture'; var ...
- 递归/回溯:Generate Parentheses生成合法括号
已知n组括号,开发一个程序,生成这n组括号所有的合法的组合可能. 例如:n = 3 结果为: ["((()))", "(()())", "(())() ...
- 幼儿园带括号算式口诀_整理41组“数学顺口溜”+大九九乘法口诀表!给孩子们收藏...
1.乘法口诀儿歌 一只青蛙一张嘴,两只眼睛四条腿. 两只青蛙两张嘴,四只眼睛八条腿. 三只青蛙三张嘴,六只眼睛十二条腿. 四只青蛙四张嘴,扑嗵扑嗵跳下水. 2.一个数除几位数儿歌 先看被除数最高位,高 ...
- linux中vi大括号enter缩进,格式 – 如何在vi中对齐代码(大括号,括号等)?
我的答案中的这些命令在vim中工作.大多数认为他们正在使用vi的人正在使用vim.要确定你的'vi'是否真的是'vim',打开vi并键入:version – 如果是vim,它会这样说.否则,您可能只看 ...
- Visual Studio Code一个帮助我们进行括号配对的扩展应用,Rainbow
我们在做前端开发时,特别是用React,Vue和Angular这些框架进行比较复杂的前端应用开发时,不可避免的需要使用多层嵌套的括号: 括号嵌套层数一多,检查括号匹配就成了一个比较头疼的问题.这时我们 ...
- 幼儿园带括号算式口诀_这么全的小学数学速算技巧、口诀不多见,教给孩子挺不错!...
在平时练习中,掌握简便算法可以给孩子大大节省时间,让孩子数学计算更快更好! 速算顺口溜 ☞ 认识钟表 跑的最快是秒针,个儿高高,身材好; 跑的最慢是时针,个儿短短,身材胖. 不高不矮是分针,匀速跑步作 ...
- html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?
我有一个与按钮一起工作的计算器来分配值.主要想法是生成公式.这些值被无缝添加到"输入"中.所有支架输入您相应的按钮时,我需要发生的是继续在括号如何使用Jquery将光标聚焦在两个括 ...
- latex数学公式(行内(间)公式标注/希腊字母/数学函数/配对括号/定理环境
本博文源于Latex,主要对Latex的数学公式进行学习,Latex的核心莫过于它的数学公式的宏包,宏包过于强大,以致于数学公式编辑起来非常优美.本博文分为: 行内行间两种公式的编写 各种字母的数学 ...
最新文章
- MySQL常见的几个错误汇总
- 08.update_by_query操作
- 22. Kotlin学习笔记 (一) 约定
- Struts2内置拦截器和自定义拦截器
- Learning Multiview 3D point Cloud Registration论文阅读笔记
- UVA 11825 Hackers' Crackdown 状态DP
- nmap 扫描工具 使用方法
- javascript(定时函数)
- pmp培训机构哪个好?各pmp培训机构排名如何?
- 超媒体是什么?Hypermedia(一种采用非线性网状结构对块状多媒体信息(包括文本、图像、视频等)进行组织和管理的技术)
- 块引用—Markdown极简入门教程(6)
- Python练习--模仿王者荣耀定义两个英雄类
- 全国首例!法院判售假者在淘宝网说“对不起”
- 在keil MDK中定义非初始化(noini)变量
- 中值滤波medianBlur函数的使用示例程序
- 量化交易alpha、beta、shape等基本概念梳理
- 怎么使用软件操作将桌面上CAD转换为黑色背景WMF格式?
- 咖说 | 姚前:区块链与央行数字货币
- 记录:google map谷歌地图自定义叠加层overlay流程
- IT行业发展前景分析