zoukankan      html  css  js  c++  java
  • 算法与数据结构第三周上机

    尾递归(另写)


    7-1 堆栈操作合法性 (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>
    #include<string>
    using namespace std;
    bool flag(int m)
    {
    	string s;
    	int sum=0;
    	cin>>s;
    		for(int j=0;j<s.length();j++)
    		{
    			if(s[j] == 'S') sum++;
    			if(s[j] =='X' ) sum--;
    			if(sum<0|| sum> m ) return false;
    		}
    		if(sum==0) return true;
    		else return false;
    }
    int  main()
    {
    	int n,m;
    	cin>>n>>m;
    	
    	for(int i=0;i<n;i++)
    	{
    		if(flag(m) )
    		{
    			cout<<"YES"<<endl;
    		}else
    		{
    			cout<<"NO"<<endl;
    		}
    	}
    	
    }
    
  • 相关阅读:
    企业IT管理说:全自动就一定是最好的吗?
    银行爱“IOE”爱得有多深
    谷歌数据中心
    屏蔽爬虫
    ,net运行框架
    视频格式
    HTTP协议
    IE的体系和webrowser
    jsp请求由servlet响应的方式
    Web请求响应简单整理
  • 原文地址:https://www.cnblogs.com/wangmou-233-1024-com/p/13701053.html
Copyright © 2011-2022 走看看