平衡的括号[UVA-673]

UVA673 Parentheses Balance

书上习题6-1,题比较简单,主要是使用栈这个“后进先出”的数据结构。因为平衡的括号,必然可以在左半括号进行push而右半括号进行pop,当到达序列末尾而栈不空,显然不满足题意了。

抛开题目说几点内容:一是之前看王爽的《汇编语言》,对栈的pop操作有些误解。在汇编语言中(8086包括现在的IA32、X86-64指令),pop指令有一个操作数,表示将栈顶的元素出栈后所放置的内存单元地址;而在数据结构的栈中,pop操作只是将栈顶元素出栈,直接就丢了。我一开始是用汇编语言的栈去理解,总是以为pop必然可以返回栈顶元素。事实上应该先用top操作去获得栈顶元素,而后用pop弹出栈顶元素。push操作则比较类似了,都带有一个操作数,都表示要压栈的元素。二是本题的描述使用了离散数学课程中的递归定义,[(])显然是不符合这个递归定义的,因为假设[]合法,两个中括号夹着的的A=(必然也需要合法,而实际上只有半个括号,是不合法的,与假设矛盾。除此之外,gets()函数需要考虑之前的空行,不然读入的是包含换行符的空串。

C++实现如下:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<stack>
 4 #include<cstring>
 5 using namespace std;
 6 int main()
 7 {
 8     stack<char> s;
 9     char buf[200];
10     int cases;
11     cin >> cases;
12     getchar();
13     while (1)
14     {
15     RESTART:
16         if (!cases--)
17             break;
18         while (!s.empty())
19             s.pop();
20         gets(buf);
21         if (strcmp(buf, "\n") == 0)
22         {
23             printf("Yes\n");
24             continue;
25         }
26         for (int i = 0; buf[i] != 0; i++)
27         {
28             switch (buf[i])
29             {
30                 case '(':
31                 case '[':
32                     s.push(buf[i]);
33                     break;
34                 case ')':
35                     if (s.empty() || s.top() != '(')
36                     {
37                         printf("No\n");
38                         goto RESTART;
39                     }
40                     else
41                         s.pop();
42                     break;
43                 case ']':
44                     if (s.empty() || s.top() != '[')
45                     {
46                         printf("No\n");
47                         goto RESTART;
48                     }
49                     else
50                         s.pop();
51                     break;
52             }
53         }
54         if (s.empty())
55             printf("Yes\n");
56         else 
57             printf("No\n");
58     }
59     return 0;
60 }

 

转载于:https://www.cnblogs.com/ggggg63/p/6696560.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仅展示近三天的动态设置_抱歉,朋友仅展示最近三天的朋友圈

QQ空间可以封存&#xff1b; 微信朋友圈可以设置三天/半年可见&#xff1b; 微博可以设置半年内可见&#xff1b; 越来越多的人选择把自己的过去隐藏起来&#xff0c;为什么&#xff1f; 上了大学之后&#xff0c;你的微信好友变多了&#xff0c;连发传单的小哥和校门口理发店的…

wallpaper怎么导入视频_快速制作视频字幕,我们推荐这款可视化字幕软件!

大家平时在使用诸如pr&#xff0c;会声会影&#xff0c;或者爱剪辑等视频编辑软件制作字幕时会不会觉得很麻烦&#xff0c;一点都不方便呢&#xff1f;亦或是大家苦苦寻找&#xff0c;却怎么都找不到合适的字幕制作软件。那么到底有没有即高效又方便快捷的字幕制作软件呢&#…

javaScript命名规范

必须以字母、$符号或下划线开头&#xff1b;可以包括数字、字母、$符号和下划线&#xff1b;不能包含空格和其他标点符号&#xff1b;区分大小写&#xff1b;最好采用驼峰命名法转载于:https://www.cnblogs.com/qqm16113/p/6702569.html

带负荷测试要求二次最小电流_开关柜设计人员如何选择合适的零序电流互感器?...

作者介绍了开关柜内配零序电流互感器(适用于0.38&#xff5e;66kV)&#xff0c;分析特性&#xff0c;探讨如何选择合适的零序电流互感器&#xff0c;以期达到最佳的使用效果。1 概述在中压电力系统的项目中&#xff0c;我们开关柜的设计人员经常会遇到开关柜内配零序电流互感器…

scikit_learn 官方文档翻译(集成学习)

1.11. Ensemble methods&#xff08;集成学习&#xff09; 目标&#xff1a; 相对于当个学习器&#xff0c;集成学习通过使用多个基学习器的预测结果来来提高学习预测的泛化性能以及鲁棒性&#xff1b; 集成学习的两个思路&#xff1a; 1&#xff09;、通过使用并行的学习&…

css 实现一个尖角_一个讲述了 CSS 相关的技巧、动画实现 的开源项目(60篇相关文章)...

iCSS不止于 CSS文章围绕 CSS/web动画 展开&#xff0c;谈一些有趣的话题&#xff0c;内容天马行空&#xff0c;想到什么说什么&#xff0c;不仅是为了拓宽解决问题的思路&#xff0c;更涉及一些容易忽视或是十分有趣的 CSS 细节。Article List下面这个左边竖条图形&#xff0c;…

2017.4.14 java基本类型和包装类的区别

int 是基本类型&#xff0c;直接存数值 Integer是类&#xff0c;产生对象时用一个引用指向这个对象Java把内存划分成两种&#xff1a;一种是栈内存&#xff0c;另一种是堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配 而实际的对象是在存…

httos双向认证配置_idou老师教你学Istio 15:Istio实现双向TLS的迁移

本文由华为云容器Istio团队撰稿&#xff0c;未经允许谢绝转载。众所周知&#xff0c;HTTPS是用来解决 HTTP 明文协议的缺陷&#xff0c;在 HTTP 的基础上加入 SSL/TLS 协议&#xff0c;依靠 SSL 证书来验证服务器的身份&#xff0c;为客户端和服务器端之间建立“SSL”通道&…

面向对象 【类库】【委托】【is as运算符】

类库(Class Library) .dll文件 类库字面意思就是类的集合&#xff0c;里面有很多被编译后的C#代码&#xff0c;不可阅读&#xff0c;不可修改&#xff0c;只能调用 类库是一个综合性的面向对象的可重用类型集合&#xff0c;这些类型包括&#xff1a;接口、抽象类和具体类。 类库…

混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...

混凝土九大类性能检测试块留置尺寸&#xff0c;具体留置前请咨询项目试验室&#xff0c;因为奇葩试验室很多&#xff01;一、砼抗压强度试块尺寸1、砼标准试件尺寸为 150*150*150&#xff08;公称最大粒径≤31.5mm&#xff09;。2、非标准试件尺寸通常用100*100*100&#xff08…

怎么做手机的上下滑动_diy滴胶手机壳到底怎么做呢?

diy滴胶手机壳到底怎么做呢&#xff1f;步骤1⃣:购买到手机壳(新手建议用有凹槽的手机壳&#xff0c;以免滴胶溢出)步骤2⃣:​拿到手机壳之后&#xff0c;建议用酒精擦拭一下&#xff0c; 以免有灰尘影响滴胶的效果步骤3⃣:​(此步骤不为必须步骤)如果不喜欢手机背面的颜色&…

扫描线三巨头 hdu1928hdu 1255 hdu 1542 [POJ 1151]

学习链接&#xff1a;http://blog.csdn.net/lwt36/article/details/48908031 学习扫描线主要学习的是一种扫描的思想&#xff0c;后期可以求解很多问题。 扫描线求矩形周长并 hdu 1928 Picture Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O…

希尔排序 最坏时间_排序算法(2)

本文介绍插入排序和希尔排序&#xff0c;插入排序是较为常见的排序算法&#xff0c;希尔排序也是基础的排序算法&#xff0c;废话不多说&#xff0c;具体来看一下两种算法。山插入排序插入排序的基本思想是拿到下一个插入元素&#xff0c;在已经有序的待排数组部分找到自己的位…

题目1017:还是畅通工程(最小生成树初步应用)

题目链接&#xff1a;http://ac.jobdu.com/problem.php?pid1017 详解链接&#xff1a;https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码&#xff1a; // // 1017 还是畅通工程.cpp // Jobdu // // Created by PengFei_Zheng on 18/04/2017. // Copyright © 201…

maven自带clean_maven之clean、install命令

1、进入到maven根目录&#xff0c;执行mvn compile命令会在根目录生成target文件(参照maven之helloworld案例)&#xff0c;如下图&#xff1a;2、执行mvn clean可将根目录下生成的target文件移除3、mvn install命令Speak.java代码package com.maven;import com.maven.HelloWorl…

多对一(一对多)的双向关联

一个组&#xff08;Group&#xff09;有多个用户&#xff08;User&#xff09;&#xff0c;进行多对一&#xff08;一对多&#xff09;的双向配置&#xff0c;在数据库中生成的表结构如下图&#xff1a; Annotation配置&#xff1a; Group: 1 package com.bjsxt.hibernate;2 3 …

angularjs 同步請求_angularjs $q、$http 处理多个异步请求

在实际业务中经常需要等待几个请求完成后再进行下一步操作。但angularjs中$http不支持同步的请求。解决方法一&#xff1a;$http.get(url1).success(function (d1) {$http.get(url2).success(function (d2) {//处理逻辑});});解决方法二&#xff1a;then中的方法会按顺序执行。…

隧道不能访问web vxaln_SpringBoot实现本地存储文件上传及提供HTTP访问服务

笔者计划为大家介绍分布式文件系统&#xff0c;用于存储应用的图片、word、excel、pdf等文件。在开始介绍分布式文件系统之前&#xff0c;为大家介绍一下使用本机存储来存放文件资源。二者的核心实现过程是一样的&#xff1a;上传文件&#xff0c;保存文件(本节是本地磁盘)返回…

poj1986 Distance Queries(lca又是一道模版题)

题目链接&#xff1a;http://poj.org/problem?id1986 题意&#xff1a;就是老问题求val[u]val[v]-2*val[root]就行。还有这题没有给出不联通怎么输出那么题目给出的数据一定 是联通的。 题解&#xff1a;就是单纯的lca。 #include <iostream> #include <cstring> …

httpsurlconnection 写不进去authorization值_23. 假设检验的时候为什么常写p lt; 0.05,而不写具体的p值?...

在进行假设检验的时候&#xff0c;如果p值小于设定的临界值&#xff0c;比如0.05或0.01、0.001等&#xff0c;人们常常会写p<0.05、p<0.01、p<0.001, 而没有写具体的p值。这种传统是曾经的技术限制造成的&#xff0c;而在今天是不被提倡的&#xff0c;现代更提倡的是直…