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]; ...
随机推荐
- 入侵必练的CMD命令
入侵必练的CMD命令 我们都知道和目标主机建立IPC$连接后,要把后门,木马之类的软件传过去,其实这个命令是DOS基础的 命令,我这里就写个格式. 一.呵呵,命令一写就知道了吧,在网上看的太多了,其他 ...
- tar split cat 创建、合并分卷压缩包
最近用微盘传文件遇到的问题,超过100M不能一次传啊,想想win下有rar和zip创建分卷压缩包很简单,就像linux的tar打包器应该也可以吧,搜了下,要和split配合完成 具体命令如下:对文件: ...
- Fastify 系列教程二 (中间件、钩子函数和装饰器)
Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) 中间件 Fastify 提供了与 Express 和 Restify ...
- Keras学习环境配置-GPU加速版(Ubuntu 16.04 + CUDA8.0 + cuDNN6.0 + Tensorflow)
本文是个人对Keras深度学习框架配置的总结,不周之处请指出,谢谢! 1. 首先,我们需要安装Ubuntu操作系统(Windows下也行),这里使用Ubuntu16.04版本: 2. 安装好Ubunt ...
- chromium源码阅读--进程间通信(IPC)
第一篇就有提到Chromium是目前默认是采用多进程架构,当然,chromium有singe-process的版本. 多进程与多线程的区别,确实有很多可以讲的,我的另一篇博客也讲了一些,这里是从浏览器 ...
- 如何用java创建一个jdbc程序
第一个jdbc程序 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和 ...
- Best Coder #86 1002 NanoApe Loves Sequence
NanoApe Loves Sequence Accepts: 531 Submissions: 2481 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- 一条咸鱼的梦--python
毕业到现在已经有一年多了,或者说已经工作了一年多,这样以一个社会人的说法比较贴切吧.工作的这段时间里,我曾经有无数次的在问我该干什么,我想干什么,这好像一个深奥的哲学问题,好像并不是只有我一个毕业生思 ...
- 在ssm框架中前后台数据交互均使用json格式
前后台数据交互均使用json. 框架ssm(spring+springmvc+mybatis) @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象,注解加 ...
- 【Kafka源码】ReplicaManager启动过程
在KafkaServer启动过程的入口中,会启动Replica Manager,众所周知,这是一个副本管理器.replica在Kafka中扮演的角色很重要,是保证消息不丢失的一个重要概念. repli ...