博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
平衡的括号
阅读量:5970 次
发布时间:2019-06-19

本文共 1769 字,大约阅读时间需要 5 分钟。

平衡的括号 

这道题目主要运用栈的一些知识。栈在第五章的STL里已经讲了一些,这里再复习一下。

栈的特点是“先进后出”。头文件是<stack>,声明方式:"stack<int> s"。

主要有以下几个操作:

push():把元素压入“栈顶”,又称入栈

pop():从栈顶把元素弹出,出栈

top():取栈顶元素(但不删除)

size():测栈长(个数)

empty():判断栈是否为空

这是我对栈的初步总结。

下面仔细看一下这道题:

题目大意:

输入一个包含“()”和“【】”的括号序列,判断是否合法。具体规则如下:(1)空串合法;(2)如果A和B都合法,则AB合法;(3)如果A合法则(A)和【A】都合法。

题目分析:

先要测出字符串的长度,如果串长==0,是合法的,输出Yes。再判断是否为括号符,将括号符入栈;再判断是否有匹配的括号符,判断j的值,j=0或-1,则符合平衡,输出Yes,否则输出No

代码:

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 130; 8 char c[maxn],m[maxn]; 9 10 int main()11 {12 int n,i,j;13 scanf("%d",&n);14 getchar();15 while(n--)16 {17 gets(c); 18 if (strlen(c) == 0)19 {20 printf("Yes\n");21 continue;22 }23 if(c[0] == ')'||c[0] == ']')24 {25 printf("No\n");26 continue;27 }28 for(i=0,j=0;i<=strlen(c);i++)29 {30 if(c[i]!='(' && c[i]!=')' && c[i]!='[' && c[i]!=']' ) //判断c是否为括号符,不是则退出此次循环31 continue;32 m[j]=c[i]; //将第一个括号符压入栈底,j指向栈底33 if(j==0) //栈底只有一个元素,使j指向第二个元素34 {35 j++;36 continue;37 }38 if( (m[j-1]=='(' && m[j]==')') || (m[j-1]=='[' && m[j]==']') )//判断是否有匹配的括号符,则j指向栈前元素,否则j 自加39 j--;40 else j++;41 }42 if(j<=0)43 printf("Yes\n");//j=0或-1,则符合平衡,输出Yes,否则输出No44 else45 printf("No\n");46 }47 return 0;48 }

总结:

有关栈的知识我看了好久才看明白一些。先是做了一些例题,找了一些关于栈的内容,了解了栈的知识。

关于栈,我要学习的还有很多,继续加油吧。。。

 

转载于:https://www.cnblogs.com/ttmj865/p/4674433.html

你可能感兴趣的文章
小程序存emoji表情 不改变数据库
查看>>
字符识别Python实现 图片验证码识别
查看>>
tf.truncated_normal和tf.random_normal使用方法的区别
查看>>
JS中apply和call的联系和区别
查看>>
Mac OS X Yosemite & Arduino安装CH340 USB转串口驱动
查看>>
Vue全局混入
查看>>
nodejs express 加载html模板
查看>>
Elementary Methods in Number Theory Exercise 1.2.3
查看>>
利用开区间覆盖的约简给出$\bf{Lindelöf}$覆盖定理的一个新证明
查看>>
2月1日学习内容整理:算法
查看>>
Django(二)模板系统
查看>>
不展现报表实现对报表的打印导出
查看>>
20172304 结对编程--四则运算实验总结
查看>>
二分搜索 POJ 3273 Monthly Expense
查看>>
Linux 小知识翻译 - 「补丁」(patch)
查看>>
分库分表的面试题3
查看>>
error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
查看>>
Docker之 默认桥接网络与自定义桥接网卡
查看>>
Ehcache 缓存
查看>>
【03-14】日常资源访问备份
查看>>