7-113 堆栈操作合法性 (20 分)

假设以SX分别表示入栈和出栈操作。如果根据一个仅由SX构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入SX序列,判断该序列是否合法。

输入格式:

输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由SX构成的序列。序列保证不为空,且长度不超过100。

输出格式:

对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是。

输入样例:

4 10
SSSXXSXXSX
SSSXXSXXS
SSSSSSSSSSXSSXXXXXXXXXXX
SSSXXSXXX

结尾无空行

输出样例:

YES
NO
NO
NO

结尾无空行

#include<iostream>
using namespace std;
int main(){int n,m,i,t=1;cin>>n>>m;getchar();while(n--){int s=0,t=1;string a;cin>>a;for(i=0;i<a.size();i++){if(a[i]=='S')s++;else s--;if(s<0||s>m){printf("NO\n");t=0;break;}}if(t==1){if(s==0)printf("YES\n");else printf("NO\n");}}return 0;
}
#include<iostream>
using namespace std;
int main()
{int n,m,i;cin>>n>>m;string s;getchar();while(n--){int k=0;getline(cin,s);for(i=0;i<s.size();i++){if(s[i]=='S'&&k<m) k++;else if(s[i]=='X'&&k>0) k--;else break;}if(i==s.size()&&k==0) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}
#include<iostream>
using namespace std;
int main(){int n,m,i;cin>>n>>m;while(n--){int s=0,x=0;string a;cin>>a;for(i=0;i<a.size();i++){if(a[i]=='S'){s++;if(s>m){cout<<"NO\n";break;}}else{x++;if(s){x--;s--;}}}if(i==a.size()){if(!s&&!x)cout<<"YES\n";else cout<<"NO\n";}}return 0;
}

7-113 堆栈操作合法性 (20 分)相关推荐

  1. 7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)

    关于堆栈: 1.它是什么 2.它为什么会出现/它的出现解决了什么问题 3.我们要怎么使用它 堆和栈到底是什么 栈和堆(托管堆)都存在于进程的虚拟内存中. 栈(Stack) 是操作系统在建立某个进程时或 ...

  2. 习题3.9 堆栈操作合法性 (20分)

    习题3.9 堆栈操作合法性 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈 ...

  3. 7-1 堆栈操作合法性 (15 分)

    ** 7-1 堆栈操作合法性 (15 分) ** 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空, ...

  4. 【PTA】7-1 堆栈操作合法性 (18 分)

    倒也不用真的用到栈. #include<iostream> using namespace std; int main() {int n,m;cin>>n>>m;w ...

  5. 7-1 堆栈操作合法性(20 分)

    7-1 堆栈操作合法性(20 分) 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合 ...

  6. 堆栈操作合法性 C++

    温馨提示:本题为深大OJ原题,深大的同学请勿直接抄袭,以免出现多个代码相同以致评0分的情况,代码和思路仅供参考,希望大家能逐步成长. 目录 题目描述 思路分析 AC代码 题目描述 假设以S和X分别表示 ...

  7. 堆栈操作合法性 (C语言)

    题目详情 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列.请编写程 ...

  8. 6-23 分离链接法的删除操作函数 (20 分)

    试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中HashTable是分离链接散列表,定义如下: type ...

  9. 6-5 顺序表操作集 (20 分)(创建,查找,插入,删除)以及顺序表的理解

    顺序表: 线性表的顺序存储 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素 在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺 ...

最新文章

  1. 根据空间线上的两点生成圆柱体 算法
  2. 使用dtd--属性声明
  3. python查看函数定义_从函数内函数定义看python的函数实现
  4. numpy(4)-计算数据异常值
  5. break后面的语句还执行吗_12.python之配合循环的四种语句
  6. ipv6单播地址包括哪两种类型_探秘联接|技术小课堂之BRAS设备IPv6地址分配方式...
  7. 三维重建笔记_多视几何_求基本矩阵F_六/七/八点法_误差评估
  8. TED如何和压力做朋友(第三天)
  9. activitymq 集群构建
  10. css显示苹方字体,苹方字体的使用
  11. C++ 线程安全的单例模式总结
  12. java 实现热搜_搜索推荐系统根据用户搜索频率(热搜)排序
  13. ajax直接调用数据库数据库数据库,AJAX调用mysql数据库简单例子(示例代码)
  14. Fusion 360 最新动态 - 温度场和热应力分析
  15. 工作队列模式(任务队列)| RabbitMQ系列(二)
  16. RT-Thread Studio 字体放大 缩小快捷键
  17. ffmpeg API FR NET
  18. TiDB数据库schema设计之表结构设计
  19. 转一个常用排序算法的动画效果图
  20. md5 java 实现_MD5加密的Java实现

热门文章

  1. delphi 点击wsdl出不了描述文件_iOS 13 公测版来了,安装公测版官方描述文件
  2. 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用
  3. gevent模块的使用
  4. Ubuntu 18.04 美化
  5. Unknown system variable 'tx_isolation'报错
  6. linux md5sum命令
  7. MongoDB开发环境搭建(windows)
  8. PowerCmd(命令行增强工具) 2.2 免费版
  9. jQuery实现购物车多物品数量的加减+总价计算
  10. leetcode 203. Remove Linked List Elements(链表)