02-线性结构4 Pop Sequence
题目

Sample Input:
5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2
Sample Output:
YES
NO
NO
YES
NO
基本思路
先把输入的数列用数组保存,然后依次将1,2,3...N入栈,每次入栈判断栈顶是否与数组中当前要输出的元素相等,如果相等则出栈(循环)。如果遇到栈满或无法输出数组所有元素的情况则输出No。
代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
template < class T >
class AStack {
private:
    int size; // 数组的规模
    T * Array; // 存放堆栈元素的数组
    int top; // 栈顶所在数组元素的下标
public:
    AStack(int MaxStackSize) // 构造函数
    {
        size = MaxStackSize; Array = new T[MaxStackSize]; top = -1;
    }
    ~AStack() { delete[] Array; } // 析构函数
    bool Push(const T& item); // 向栈顶压入一个元素
    bool Pop(T & item); // 从栈顶弹出一个元素
    T Top() const { return Array[top]; } // 查看栈顶元素
    int IsEmpty(void) const { return top == -1; }
    // 检测栈是否为空
    int IsFull(void) const { return top == size - 1; }
    // 检测栈是否为满
    void clear(void) { top == -1; } // 清空栈
};
template < class T >
bool AStack<T>::Push(const T& item)
{
    if (this->IsFull())
    {
        //    cout << "full" << endl;
        return false;
    }
    else
    {
        Array[top + 1] = item;
        top++;
    }
    return true;
}
template < class T >
bool AStack<T>::Pop(T& item)
{
    if (this->IsEmpty())
    {
        //cout << "empty" << endl;
        return false;
    }
    else
    {
        item = Array[top];
        top--;
    }
    return true;
}
int Judge(int M, int N);
int main()
{
    int M, N, K;
    cin >> M;
    cin >> N;
    cin >> K;
    int *yes = new int[K];
    for (int i = 0; i < K; i++)
    {
        yes[i] = Judge(M, N);
    }
    for (int i = 0; i < K; i++)
    {
        if (yes[i])
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}
int Judge(int M, int N)
{
    int item[1000], now = 0;
    AStack<int> stack(M);
    for (int i = 0; i < N; i++)
    {
        cin >> item[i];
    }
    for (int i = 1; i <= N; i++)
    {
        stack.Push(i);
        while (item[now] == stack.Top())
        {
            int temp;
            stack.Pop(temp);
            now++;
            if (now == N)
            {
                //cout << "YES" << endl;
                return 1;
                break;
            }
            continue;
        }
        if (stack.IsFull())
        {
            //cout << "NO" << endl;
            return 0;
            break;
        }
    }
    return 0;
}
总结
试了下,好像在读输入的时候同时输出也是可以的。
02-线性结构4 Pop Sequence的更多相关文章
- 线性结构4 Pop Sequence
		
02-线性结构4 Pop Sequence(25 分) Given a stack which can keep M numbers at most. Push N numbers in the or ...
 - pat02-线性结构4. Pop Sequence (25)
		
02-线性结构4. Pop Sequence (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given ...
 - 02-线性结构4 Pop Sequence
		
02-线性结构4 Pop Sequence (25分) 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:陈越 单位:浙江大学 https://pta.p ...
 - 02-线性结构3 Pop Sequence
		
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
 - 数据结构练习 02-线性结构3. Pop Sequence (25)
		
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
 - 02-线性结构4 Pop Sequence (25 分)
		
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
 - PTA 02-线性结构4 Pop Sequence   (25分)
		
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/665 5-3 Pop Sequence (25分) Given a stack wh ...
 - 02-线性结构4 Pop Sequence (25 分)
		
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
 - [刷题] PTA 02-线性结构4 Pop Sequence
		
模拟栈进出 方法一: 1 #include<stdio.h> 2 #define MAXSIZE 1000 3 4 typedef struct{ 5 int data[MAXSIZE]; ...
 
随机推荐
- dotweb框架之旅 [四] - 常用对象-HttpContext
			
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
 - C#匹配标签正则,获取标签的值
			
比如要获取: <color=#50cccc>头盔坐标:(-0.6, 1.0, 1.2)</color><color=#3d85c6>头盔方向(-0.2, 0.1, ...
 - Java中的类变量、实例变量、类方法、实例方法的区别
			
类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并 ...
 - c++ 类的默认八种函数
			
c++ 类的默认八种函数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #incl ...
 - CodeForces - 556B  Case of Fake Numbers
			
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
 - 暑假练习赛 007 A - Time
			
A - Time Description standard input/outputStatements A plane can go from city X to city Y in 1 hour ...
 - javaSE基础
			
变量 1.变量就是数据存储空间的表示. 2.标识符命名规则:变量名=首字母+其余部分 ①首字母:字母.下划线.“$”符号(开头) ②其余部分:数字.字母.下划线“$” ③应避开关键字:int int ...
 - Java Enum用法详解
			
Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...
 - python实现查有道词典
			
因为要考英语四级,所以我今天一大早就起来被英语单词,但是作为英语渣渣的我,只能是在网页上挨个查单词的意思.查的多了,心生厌倦,便想着如何才能在终端下查单词,那样速度不就很快了? NOW,我仔细观察每次 ...
 - 一个简单的MVC框架的实现
			
1.Action接口 package com.togogo.webtoservice; import javax.servlet.http.HttpServletRequest; import jav ...