PAT甲级-栈模拟-1051 Pop Sequence解题思路

1051 Pop Sequence (25 分)

在这里插入图片描述

思路

栈的使用

注:使用pop()和top()必须在确定stack长度不为0时,否则会出现段错误

while(!ss.empty() && ss.top() == in[cur] )

代码

#include<bits/stdc++.h>
using namespace std;

stack<int>ss;
int in[1005]={
    
    0};

int main(){
    
    
    int M,N,K;
    cin>>M>>N>>K;
    while(K--)
    {
    
    
        bool flag =false;
        int cur = 0;
        while(!ss.empty())
            ss.pop();
        for(int i =0;i<N;i++)
            cin>>in[i];
        for(int i=1;i<=N;i++)
        {
    
    
            ss.push(i);
            if(ss.size()>M)
            {
    
    
                flag = true;
                break;
            }
            while(!ss.empty() && ss.top() == in[cur] )
            {
    
    
                ss.pop();
                cur+=1;
            }
        }
        if(!ss.empty() || flag)cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43999137/article/details/114676344