码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构 | 栈:1051

时间:2018-03-10 16:04:05      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:nbsp   algo   结构   相同   log   数据   include   std   c代码   

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

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;
}

 

数据结构 | 栈:1051

标签:nbsp   algo   结构   相同   log   数据   include   std   c代码   

原文地址:https://www.cnblogs.com/TQCAI/p/8539045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!