7-113 堆栈操作合法性

简介: 7-113 堆栈操作合法性

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


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


输入格式:


输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过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;
}
目录
相关文章
|
Serverless
函数计算在执行请求的过程中遇到了意外的错误
函数计算在执行请求的过程中遇到了意外的错误
97 1
|
7月前
|
JavaScript 前端开发 程序员
通过一篇文章带你解决如何加密代码任然可以运行
在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。
303 0
|
存储 运维 安全
基于VS调试分析 + 堆栈观察问题代码段
面对眼前两段有问题的代码,你会通过什么去解决这个问题?本文将通过调试进行逐步分析💻,带你步步观察程序的运行逻辑
21391 0
基于VS调试分析 + 堆栈观察问题代码段
|
安全 API Android开发
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
559 0
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
|
SQL 数据库连接 数据库
实时错误“91” 对象变量或with块变量未设置”
实时错误“91” 对象变量或with块变量未设置”
852 0
实时错误“91” 对象变量或with块变量未设置”
|
SQL 数据库连接 数据库
实时错误 ‘91‘ :对象变量或with块变量未设置
实时错误 ‘91‘ :对象变量或with块变量未设置
实时错误 ‘91‘ :对象变量或with块变量未设置
对线程中未捕获的异常进行处理UncaughtExceptionHandler
对线程中未捕获的异常进行处理UncaughtExceptionHandler
|
SQL 安全 数据库
基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误
一数据库服务器(SQL Server 2014)上的一个作业执行报错,具体错误信息如下:   Executed as user: NT SERVICE\SQLSERVERAGENT. 用户 &#39;xxxx\xxxxx$&#39; 登录失败。
1953 0
基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误
|
安全 网络协议
CVE-2020-8617:检查TSIG有效性的代码逻辑错误可能被用于触发tsig.c中的断言失败
2020年5月19日,ISC发布了BIND的一个新的漏洞和补丁。在受到攻击时,新版本的BIND服务器可以触发tsig.c中的断言失败,而检测到服务器不一致的状态并强制退出,进而保护服务器。
|
PHP Windows 安全