1051 Pop Sequence (25 分)难度: 中 / 知识点: 模拟 栈

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1051 Pop Sequence (25 分)难度: 中 / 知识点: 模拟 栈相关的知识,希望对你有一定的参考价值。


https://pintia.cn/problem-sets/994805342720868352/problems/994805427332562944

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int a[N],n,m,k;
bool check()
{
    stack<int>st;
    for(int i=0,val=1;i<n;i++)
    {
        while(val<=n&&(st.empty() || st.top()!=a[i])) st.push(val++);//让之前的元素全部进栈
        if(st.empty()||st.top()!=a[i]) return false;//弹不出来元素
        st.pop();
        if(st.size()>=m) return false;//如果弹出元素后,栈的大小还是大于等于m则不合法
    }
    return true;
}
int main(void)
{
    cin>>m>>n>>k;
    while(k--)
    {
        for(int i=0;i<n;i++) cin>>a[i];
        if(check()) puts("YES");
        else puts("NO");
    }
    return 0;
}

以上是关于1051 Pop Sequence (25 分)难度: 中 / 知识点: 模拟 栈的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1051. Pop Sequence (25)

1051. Pop Sequence (25)

1051. Pop Sequence (25)

1051. Pop Sequence (25)

PAT1051. Pop Sequence (25)

PAT甲题题解-1051. Pop Sequence (25)-堆栈