作者刚刚看到这一题时,觉得需要使用相当高大上的东西——数据结构中的栈高大上个鬼 ,相信各位都对栈不陌生,但作者还是要在提一提:

#include<bits/stdc++.h>//惊喜不
using namespace std;
int main(){stack <int/*指栈的类型*/> s;//构造一个栈s.push(a);//输入栈顶元素s.size()//返回栈长度s.top();//返回栈顶元素s.pop();//弹出栈顶元素
}

还有其他的也不经常用了常用作者也不知道了 quq
好了,说完基础,可以做题了,请听题:

括弧匹配检验

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 11603 通过数: 3691

【题目描述】
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意。

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?

输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。

【输入】
输入仅一行字符(字符个数小于255)。

【输出】
匹配就输出 “OK” ,不匹配就输出“Wrong”。

【输入样例】
[(])
【输出样例】
Wrong

呵呵呵,这题的确很经典,用栈做二三十行解决,不用栈做大家可以试一试,反正作者没试过。

一样的惯例,先来一段核心伪代码:

if(是前括号/*(或[*/){弹入栈;
}else if(小回括号){if(长度大于0/*很重要*/且栈顶元素是小前括号){弹出栈;}else{cout<<"Wrong";return 0;}
}else{if(长度大于0/*很重要*/且栈顶元素是中前括号){弹出栈;}else{cout<<"Wrong";return 0;}
}
if(长度为0){cout<<"OK";
}else{cout<<"Wrong";
}

有人可能回不加长度大于0这个条件,我只好送你一句话:Too yuong too simple;

伪代码中的长度大于0非常重要,如果不加的话你可以尝试一下下面这个数据:
input:(()[]
output:Wrong

如果不加输入这个数据,你的代码会崩掉,因为如果第一个字符是回括号的话去弹出栈顶元素,显然没有东西给你弹出,so,呵呵…其他如果不会弹出啊之类的,详见上面的科普。
好了,看一下完整代码对一下你的想法是否跟我一样:

#include<bits/stdc++.h>
using namespace std;
int main(){stack<char> s;char k[260];cin>>k;int len = strlen(k);for(int i = 0;i<len;i++){char c = k[i];if( c == '(' || c == '['){s.push(c);}else if( c == ')'){if(s.top() == '('){s.pop();}else{cout<<"Wrong";return 0;}}else if( c == ']'){if(s.top() == '['){s.pop();}else{cout<<"Wrong";return 0;}}}if(s.size()== 0){cout <<"OK";}else{cout<<"Wrong";}return 0;
}
//((([[[()[]([[(())]])]]])))一个小小的测试数据,结果是OK

这一题的题解到此为止,呵呵~

栈应用 括弧匹配问题 题解(C++)相关推荐

  1. SSL1659 栈练习括弧匹配检验

    栈练习括弧匹配检验 Description 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ...

  2. 括弧匹配检验:比较基础的栈

    括弧匹配检验: 题目描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误 ...

  3. 数据结构 栈 括弧匹配检验

    括弧匹配检验 描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 () 或 [([][])] 等为正确的匹配,[(]) 或( 或 (([)]) 均为错误的匹配. 现在的问题是,要 ...

  4. 表达式括弧匹配的检测【问题描述】利用栈的基本操作,完成表达式括弧匹配的检测。(假设表达式中只有()、[]、{}三类括弧)【输入形式】输入若干个表达式(字符串形式)。(提示:使用scanf

    表达式括弧匹配的检测 [问题描述] 利用栈的基本操作,完成表达式括弧匹配的检测.(假设表达式中只有().[].{}三类括弧) [输入形式] 输入若干个表达式(字符串形式).(提示:使用scanf(&q ...

  5. 信息学奥赛一本通 1354:括弧匹配检验

    [题目链接] ybt 1354:括弧匹配检验 [题目考点] 1. 栈 [解题思路] 遍历字符串,左括号入栈,遇到右括号时,看栈顶括号与右括号是否能配对.如果两个括号都是小括号或中括号,那么二者配对,左 ...

  6. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

  7. 六十三、栈在括号匹配和表达式求值中的应用

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 算法,一门既不容易入门,也不容易精通的学问. 文章目录 括号匹配 数 ...

  8. 数据结构-栈在括号匹配中的应用

    所谓括号校验匹配其实质是对多种类型括号正确配对的校验(包括:().[].{})即([])或者[()]为正确的表达式,如果出现交叉则匹配失败,如[(])或([())则为不正确格式. 该程序也运用了栈的思 ...

  9. 栈在括号匹配中的应用

    括号匹配问题 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序任意即()或[([][])]等均为正确的格式,[(]或([())或(()]均为不正确的格式. void test() {int ...

最新文章

  1. Truncate 删除数据
  2. Emacs中的RSS阅读器--newsticker
  3. android判断模拟器的三种方法
  4. Bigtable的些许重点
  5. 批量造数据的一种方法
  6. python周志_Python几周学习内容小结
  7. MooTools教程(4):函数和MooTools
  8. ES6-ES11新特性_ECMAScript_简单介绍---JavaScript_ECMAScript工作笔记001
  9. IP地址基础和子网规划之其一
  10. css 各浏览器里的不同
  11. Mysql的sql语句基础大全,仅供个人笔记参考,由于创建过程只求速度,所以结构比较乱,请不要打开,如有需要,请自行查阅其他文献
  12. BAT三巨头谁最先进五百强?
  13. 服务器XP系统打印机共享设置,windowsxp系统打印机共享设置方法介绍
  14. 安卓手机管理器_安卓平台上功能最全面强大的文件管理器!
  15. 电脑为何连不上手机开的热点
  16. Ubuntu16.04 1660ti显卡驱动安装
  17. 图神经网络(贪心学院)
  18. c++程序 cpu占用过高排查方法
  19. 12个固态硬盘优化技巧,延长固态硬盘使用寿命
  20. 1.找到适合你的学习方法

热门文章

  1. composer 安装 thinkphp
  2. 壁挂炉计算机控制系统,DIY壁挂炉温控器连入米家实现自动和远程控制
  3. LeetCode/LintCode 题解丨一周爆刷字符串:乱序字符串
  4. win10下caffe环境搭建: win10 + vs2013 + caffe + CUDA 7.5 + cudnn v4 + Anaconda2 (python 2.7) 目前未使用GPU
  5. win10系统怎么合并电脑分区?
  6. 计算机无法开机出现英文,电脑开机出现英文字母开不了机解决方法
  7. java监听微信_一种基于java后台应用监控微信小程序的用户访问量的方法与流程...
  8. 后端 php mysql_搭建并部署PHP + MySQL后端环境
  9. 7.12 C语言练习(爬动的蠕虫:一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。)
  10. 新版本android_id,android手机唯一id方案总结