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;
    }
  • 相关阅读:
    halcon 2极坐标转笛卡尔坐标
    xmal随笔
    halcon 3焊点查找
    halcon 药丸查找
    halcon 1区域保存生成
    mokee源码下载
    多个DataTable的合并成一个新表
    代码分析工具
    SQL大量数据查询分页存储过程
    sqlite3使用简介
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8539045.html
Copyright © 2011-2022 走看看