数据结构10.判断出栈序列

请判断:指定的序列能否仅由 入栈 和 出栈 操作得到。

输入:
有若干组数据输入
每组数据中,第一行为两个个整数 n 和 m。n 表示需要依次从 1~n 入栈,m 表示这组数据有 m 个出栈序列需要判断,当 n=0 且 m=0 时停止。
接下来有行,每行表示一个出栈序列

输出:
对每一个出栈序列,如果能正常出栈,则输出 Yes,否则输出 No。

在这里插入图片描述

    #include<iostream>  
    
    #include<stack>  
    
    using namespace std;  
    
    int n,m,a[10005];  
    
    stack<int>s;  
    
    int main()  
    
    {  
    
        int cnt=0,j;  
    
        bool flag;  
    
        while(cin>>n>>m)  
    
        {  
    
            if(!n&&!m)  
    
                break;  
    
            cnt++;  
    
            if(cnt>1)  
    
                cout<<endl;  
    
            while(m--)  
    
            {  
    
                flag=true,j=1;  
    
                for(int i=0;i<n;i++)  
    
                    cin>>a[i];  
    
                for(int i=0;i<n;i++)  
    
                {  
    
                    if(!flag)  
    
                        continue;  
    
                    for(;j<=a[i];j++)  
    
                        s.push(j);  
    
                    if(s.top()!=a[i])  
    
                    {  
    
                        flag=false;  
    
                        continue;  
    
                    }  
    
                    s.pop();  
    
                }  
    
                if(flag)  
    
                    cout<<"Yes"<<endl;  
    
                else  
    
                    cout<<"No"<<endl;  
    
            }  
    
        }  
    
        return 0;  
    
    }  
发布了58 篇原创文章 · 获赞 117 · 访问量 6805

猜你喜欢

转载自blog.csdn.net/weixin_44936889/article/details/103772343