栈混洗问题的一般处理

使用一个临时变量temp,初始值为1,代表模板数据

对于输入数据的判断:

建立一个while循环,以及bool变量flag,条件为栈的size不超过最大值和flag为真

如果当前栈为空,或者输入数据不等于栈顶元素,则加一个更大的(自增1)的temp入栈

如果等于栈顶元素则出栈

while循环结束之后判断栈是否溢出,如果溢出则将flag设置为false

新一轮开始之前如果栈不为空则应首先清空

#include<iostream>
#include<stack>
#include<vector>
using namespace std;

int main()
{
    int M, N, K;//M为栈的最大容量,N为要检查序列的长度,K为检查次数
    cin >> M >> N >> K;
    stack<int>check;
    int input;
    for (int i = 0; i < K; i++) {
        int temp = 1;
        bool flag = true;
        for (int j = 0; j < N; j++)
        {
            cin >> input;
            while (check.size()<=M&&flag)
            {
                if (check.empty() ||input!=check.top())
                {
                    check.push(temp++);
                }
                else if(input==check.top())
                {
                    check.pop();
                    break;
                }
            }
        }
        if (check.size()>M) {
            flag = false;

        }
        if (flag) {
            cout << “YES” << endl;
        }
        else {
            cout << “NO” << endl;
        }
        while  (!check.empty()) {
            check.pop();
        }
    }

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java byte code 的学习意义 为啥要学java bytecode,这就跟你问我已经会python了为...
    shanggl阅读 1,729评论 0 3
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,395评论 11 349
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,521评论 8 114
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,241评论 30 472
  • 莘苒再唠叨 了解是理解的基础,理解是尊重的开始! 强调 强调 再强调 养育的过程,像足了中国人很禅意的说法 有...
    和翊浛阅读 274评论 0 0