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]; ...
随机推荐
- 【20171025晚】alert(1) to win 第五题 正则表达式过滤
吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...
- jvm - 垃圾回收
jvm - 垃圾回收 注意 : 本系列文章为学习系列,部分内容会取自相关书籍或者网络资源,在文章中间和末尾处会有标注 垃圾回收的意义 它使得java程序员不再时时刻刻的关注内存管理方面的工作. 垃圾回 ...
- C#中判断语句 if、if-else if、switch-case
1.if一般用于一个条件的判断: 2.if-else if 一般用于多个条件的判断: 3.switch-case一般用于多个条件的判断. 注:if-else if与switch-case的区别在于:一 ...
- bug:论用例健壮性的重要
最近出了2个类似问题,此处写下,以作为警醒 问题1: 背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动 需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制.用 ...
- .Net Core在Ubuntu上操作MySql折腾实录
.Net Core 2.0 发布也这么久了,一直想着折腾着玩玩,无奈一直没时间,这几天准备开始好好学习下C#在跨平台方面的应用,记录下来以备自己以后回忆.学习. 本篇博客的主要内容: MySql在Ub ...
- NFS存储服务部署
第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌握) □ NFS共享文件系统使用原理讲解 ...
- kettle闪退问题
确定Java的配置环境没问题 kettle闪退的时候把spoon.bat里面的配置项改一下 if "%PENTAHO_DI_JAVA_OPTIONS%"=="" ...
- Azure ASM虚拟机部署“安全扩展”
Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/secu ...
- Log4j 2翻译 Garbage-free Steady State Logging(稳定的以不会生成垃圾的状态来记录日志)
本人菜鸟,在学习Log4j 2 的时候做的一些笔记---对"官方网站"的翻译,部分内容自己也不懂,希望大家指点 Garbage collection pauses are a co ...
- TOMCAT启动到一半停止如何解决
当你的项目过大的时候,往往会导致你的TOMCAT启动时间过长,启动失败,遇到该情况可以试一下下面两招: TOmcat启动到一半的时候停止了,以下原因: 1. tomcat启动时间超过了设置时间: 解 ...