zoukankan      html  css  js  c++  java
  • 习题3.9 堆栈操作合法性(20 分)浙大版《数据结构(第2版)》题目集

    假设以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>
    #include <map>
    #include <algorithm>
    #include <stack>
    
    using namespace std;
    
    int main()
    {
        int n,c = 0,m;
        cin>>n>>m;
        string s;
        while(n--)
        {
            cin>>s;
            c = 0;
            for(int i = 0;i < s.size();i ++)
            {
                if(s[i] == 'S')
                {
                    c ++;
                    if(c > m)break;
                }
                else
                {
                    c --;
                    if(c < 0)break;
                }
            }
            if(c == 0)cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
  • 相关阅读:
    Java中的异常处理
    Java源码阅读Vector
    Java源码中遇到的一些问题(更新中)
    Java迭代器原理
    有趣的位运算-与或非
    有趣的位运算-移位运算
    为何要使用原码, 反码和补码?
    有趣的位运算-异或
    为什么实现Serializbale接口就能够进行序列化?
    死锁,活锁,饥饿
  • 原文地址:https://www.cnblogs.com/8023spz/p/7635363.html
Copyright © 2011-2022 走看看