zoukankan      html  css  js  c++  java
  • 数据结构 | 栈:1051

    这是一个栈的模拟题,同时“通过出栈序列判断是否合理”这样的考法在考研中经常遇到,也很有可能被命致为考研算法题,这类题的解题方法值得深究。

    1、既然是模拟入栈出栈行为,我们就让其不停的入栈,这是一个外循环。

    2、如果入栈后超出了栈的规格,就退出循环。

    3、在控制非空的条件下,如果栈顶与给定序列相同,那么说明出栈行为发生了,出栈。并且回到第三步再进行判断。

    最后只要判断序列是否被模拟完即可。

    AC代码:

    #include <stdio.h> 
    #include <stack> 
    #include <algorithm>
    
    using namespace std;
    
    int main(){
    //    freopen("1051.txt","r",stdin);
        int m,n,k,i;
        int a[1001];
        scanf("%d%d%d",&m,&n,&k);
        while(k--) {
            int cur=1;
            stack<int> s;
            for(i=1;i<=n;i++) scanf("%d",&a[i]);
            for(i=1;i<=n;i++){
                s.push(i);
                if(s.size()>m) break;
                while(!s.empty() && s.top()==a[cur]){
                    s.pop();
                    cur++;
                }
            }
            puts(cur==n+1?"YES":"NO");
        }
        return 0;
    }
  • 相关阅读:
    Xargs
    录制终端会话-script--查找find
    命令之乐-cat
    Linux_shell编程--比较与测试
    线程进程
    计算机网络基础
    python基础-列表相关
    初学Python
    numpy 基本的数组统计方法
    python 操作mysql 入门
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8539045.html
Copyright © 2011-2022 走看看