• 02-线性结构3. Pop Sequence


    题目有一点要注意,就是样例的第五组:1 7 6 5 4 3 2
    1可以先出,23456入栈之后,7不能入栈了,所以是不行的
    杭电1022有差不多的图可以理解一下
    用stl写的,c太麻烦不想写

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<iostream>
    #include<stack>
    using namespace std;
    
    int main()
    {
        int i,j,n,m,k,t;
        bool f;
        while(~scanf("%d%d%d",&n,&m,&k))
        {
            while(k--)
            {
                f=1;j=1;
                stack<int>s;
                for(i=0;i<m;i++)
                {
                    scanf("%d",&t);
                    if(f)
                    {
                        while(s.empty()||s.top()!=t)
                        {
                            s.push(j);
                            if(s.size()>n) {f=0;break;}
                            j++;
                        }
                        if(f&&s.size()>=1&&s.top()==t) s.pop();
                    }
                }
                if(!f) printf("NO
    ");
                else printf("YES
    ");
            }
        }
        return 0;
    }

    用数组模拟栈第三个样例提示段错误,懒的去想为什么了

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<iostream>
    #include<stack>
    using namespace std;
    
    int main()
    {
        int i,j,n,m,k,t,a[120],top,b[120];
        while(~scanf("%d%d%d",&n,&m,&k))
        {
            while(k--)
            {
                for(i=0;i<m;i++) scanf("%d",&a[i]);
                top=0,j=0,i=1;
                while(j<m)
                {
                    if(i==a[j]&&top<n)
                    {
                        i++;
                        j++;
                    }
                    else if(top>0&&b[top]==a[j])
                    {
                        j++;
                        top--;
                    }
                    else if(top<n-1&&i<=m)
                    {
                        b[++top]=i;
                        i++;
                    }
                    else break;
                }
                if(j<m) printf("NO
    ");
                else printf("YES
    ");
            }
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    学姐学长们的测试
    loli的测试——搜索
    搜索-2
    单调队列
    乱搞题 (不知道怎么分类)
    对拍及数据生成
    搜索-1
    矩形重叠
    拼写单词
    java笔记
  • 原文地址:https://www.cnblogs.com/xryz/p/4848057.html
Copyright © 2020-2023  润新知