括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes算法:采用栈这种数据结构,遍历字符串遇到'('和'['的时候放入栈中,遇到')'和']'的时候取出栈顶元素进行对应的匹配,匹配上了就出栈,直到遍历完成,如果栈中还有剩余的元素没有出栈,那么输出NO否则输出Yes下面我们来看一下具体的代码
 1 #include <iostream>
 2 #include<string.h>
 3 #include<stack>
 4 using namespace std;
 5 int main()
 6 {
 7     int n;
 8     cin>>n;
 9     while(n--)
10     {
11         char a[10010];
12         cin>>a;
13         int i,l;
14         l=strlen(a);
15         if(l%2==1)//字符个数为奇数则肯定不匹配
16         {
17             cout<<"No"<<endl;
18             continue;
19         }
20         stack <char> s;
21         for(i=0;i<l;i++)
22         {
23             if(a[i]=='('||a[i]=='[')
24             {
25                 s.push(a[i]);
26             }
27             else
28             {
29                 if(!s.empty()&&s.top()=='('&&a[i]==')')
30                 {
31                     s.pop();
32                     continue;
33                 }
34                 if(!s.empty()&&s.top()=='['&&a[i]==']')
35                 {
36                     s.pop();
37                     continue;
38                 }
39             }
40         }
41         if(!s.empty())
42         {
43            cout<<"No"<<endl;
44             continue;
45         }
46         else
47         {
48            cout<<"Yes"<<endl;
49             continue;
50         }
51     }
52     return 0;
53 }

若有不足和错误之处,欢迎兄弟们拍砖指正!!!

转载于:https://www.cnblogs.com/yinbiao/p/8280140.html

NYOJ2—括号配对问题相关推荐

  1. nyoj2 括号配对问题

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100), ...

  2. NYOJ2括号配对问题

    括号配对是最基本的栈的问题,它是栈入门的经典题目,思路是,如果是左括号直接进栈,如果是右括号,这时就要比较栈顶的元素与他是否匹配,如果匹配则出栈,否则进栈,下面是代码的实现: 1 #include & ...

  3. NYOJ 括号配对问题

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100), ...

  4. ACM试题 - 括号配对问题 - Java中字符串截取和定位问题

    ACM试题题源(括号配对问题):http://acm.nyist.net/JudgeOnline/problem.php?pid=2 提交代码: import java.util.Scanner;pu ...

  5. 括号配对问题_栈stack

    问题 A: 括号配对问题 时间限制: 3 Sec  内存限制: 128 MB 提交: 3  解决: 2 [提交][状态][讨论版] 题目描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第 ...

  6. NYOJ 2 括号配对问题

    括号配对问题 时间限制:3000 ms  |           内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N& ...

  7. 括号配对问题 -- ACM解决方法

    括号配对问题 (栈的使用) 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数 ...

  8. acm括号配对问题c语言,ACM:UESTC - 649 括号配对问题 - stack

    /*/ 简单的括号配对问题 先把给出的数字串全部变成括号串,在用栈去压入括号,每次保存栈顶括号,如果栈顶括号能和下一个括号配对,就把栈顶弹出,指括号的指针后移. 最后判断栈内是否还有元素,如果有,就说 ...

  9. 括号配对问题----栈模拟

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100), ...

最新文章

  1. no.1 voice
  2. 老李秘技:loadrunner11是否还支持dblib协议?
  3. Android污点分析工具flowdroid源码简析
  4. pythonista3安卓_Pythonista 3 app下载
  5. PHP配置环境中开启GD库
  6. 使用wsimport将wsdl生成java
  7. python工资高还是java-python工资高还是java
  8. fat linux 链接,FAT格式磁盘镜像制作方法
  9. java面试之String的理解(自我理解)
  10. 信捷电子凸轮使用_1.电子凸轮入门应用之基础知识介绍
  11. 用计算机处理表格信息,怎么制作表格-三线表丨做数据表格必须学会的处理技巧...
  12. 删除Mac右上角可恶的状态栏图标
  13. wlan mac地址 network interface IPv6 IPv4
  14. 程序员常用的博客网站
  15. opencv中 画六边形
  16. 11.练习:用*号打印直角三角形
  17. 在docker中使用sqlplus
  18. 入职腾讯第九年,我辞职了!
  19. 学习reflux的总结
  20. python使用for循环输出0~10之间的整数_用Python编写一个程序,使用for循环输出0~10之间的整数...

热门文章

  1. Introduction-to-React-JS
  2. Pyhton函数式编程简介(四)装饰器
  3. 如何成为数据科学家_成为数据科学家的5大理由
  4. linux修改进程优先级
  5. 以太网物理层(PHY)
  6. 使用Xcap发送网络数据包
  7. C语言const 关键字
  8. a.out、coff、elf三种文件格式
  9. GPU Gems1 - 25 用纹理贴图进行快速过滤宽度的计算
  10. 语言省考安徽考区_安徽省中小学新任教师公开招聘统一笔试 中学信息技术学科考试大纲...