5-5 堆栈操作合法性 (20分)
来源:互联网 发布:手机放电软件 编辑:程序博客网 时间:2024/09/21 06:37
5-5 堆栈操作合法性 (20分)
假设以S
和X
分别表示入栈和出栈操作。如果根据一个仅由S
和X
构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S
和X
序列,判断该序列是否合法。
输入格式:
输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S
和X
构成的序列。序列保证不为空,且长度不超过100。
输出格式:
对每个序列,在一行中输出YES
如果该序列是合法的堆栈操作序列,或NO
如果不是。
输入样例:
4 10SSSXXSXXSXSSSXXSXXSSSSSSSSSSSXSSXXXXXXXXXXXSSSXXSXXX
输出样例:
YESNONONO
这个题叫用栈来进行模仿,但我发现用数组来模仿栈的操作是非常不错的,更简单一些。
#include<stdio.h>#include<iostream>#include<queue>#include<stack>#include<string.h>using namespace std;int main(){ string s; int n,m; scanf("%d%d",&n,&m); getchar(); while(n--) { cin>>s; int k=0; int i; // printf("%d\n",s.size() ); for(i=0;i<s.size() ;i++) { if(s[i]=='S') { k++;}if(k>m){printf("NO\n");break;}if(s[i]=='X'){if(k<1){printf("NO\n");break;}else{k--;}}}if(k==0&&s.size() ==i)printf("YES\n");if(k!=0&&s.size() ==i){printf("NO\n");}s.clear() ; } }
阅读全文
0 0
- 5-5 堆栈操作合法性 (20分)
- 5-5 堆栈操作合法性 (20分)
- 7-1 堆栈操作合法性(20 分)
- pta 习题集5-6 堆栈操作合法性
- PTA 7-2 堆栈操作合法性(20 分)20分代码
- PAT 堆栈操作合法性
- 堆栈操作合法性
- PTA 堆栈操作合法性
- 堆栈操作合法性
- 堆栈操作合法性
- 7-1 堆栈操作合法性
- 堆栈操作合法性(PAT_sdut_天梯赛训练赛_8)
- 5-22 堆栈模拟队列 (25分)
- 5-22 堆栈模拟队列 (25分)
- 5-3 说反话-加强版 (20分)——一维数组+堆栈思想
- 5-23 IP地址转换 (20分) (位操作)
- 4-5 链式表操作集 (20分)
- 4-5 链式表操作集 (20分)
- multimap 作家与作品查询系统
- 知识点总结 Activity生命周期七种方法
- json对象与json字符串之间的相互转换
- HDU 1863 畅通工程 (最小生成树--Kruscal、Prim)
- java线程状态
- 5-5 堆栈操作合法性 (20分)
- R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation
- Java JVM/JMM/GCC剖析
- CSS核心概念再回顾
- 按小时统计数据
- 数据分析师面试常见的77个问题(答案会慢慢补充)
- 陈纪修老师《数学分析》 第07章:定积分 笔记
- 作为一个菜比,我开始挑战Leetcode
- MFC中常用数据类型之间的相互转换