[刷题] PTA 02-线性结构4 Pop Sequence
模拟栈进出
方法一:
1 #include<stdio.h>
2 #define MAXSIZE 1000
3
4 typedef struct{
5 int data[MAXSIZE];
6 int top;
7 }SqStack;
8
9 int InitStack(SqStack *s){
10 s->top=-1;
11 return 0;
12 }
13
14 int Push(SqStack *s,int e){
15 if(s->top==MAXSIZE) return 1;
16 s->top++;
17 s->data[s->top]=e;
18 return 0;
19 }
20
21 int Pop(SqStack *s){
22 int e;
23 if(s->top==-1) return 1;
24 e = s->data[s->top];
25 s->top--;
26 return e;
27 }
28
29 int main(){
30 int m,n,k,i,h;
31 SqStack s,t;
32 scanf("%d%d%d",&m,&n,&k);
33 while(k--){
34 InitStack(&s);
35 InitStack(&t);
36 for(i=n-1;i>=0;i--){
37 scanf("%d",&(t.data[i]));
38 }
39 t.top=n-1;
40 i=0;
41 while(i<=n){
42 if(s.data[s.top]==t.data[t.top]&&s.top!=-1){
43 Pop(&s);
44 Pop(&t);
45 }else if(s.top<m-1 && i<n){
46 i++;
47 Push(&s,i);
48 }else{
49 break;
50 }
51 }
52 if(s.top==-1 && t.top==-1){
53 printf("YES\n");
54 }else{
55 printf("NO\n");
56 }
57 }
58 return 0;
59 }
分析:
1、自定义栈
2、通过两个栈模拟进出
方法二:
1 #include<stdio.h>
2 #include<iostream>
3 #include<vector>
4 #include<stack>
5 using namespace std;
6
7 int M,N,K;
8
9 int Check(vector<int> &v) {
10 int i=0;
11 int num=1;
12 int cap=M+1;
13 stack<int> sta;
14 sta.push(0);
15 while(i<N) {
16 while(v[i]>sta.top()&&sta.size()<cap)
17 sta.push(num++);
18 if(v[i++]==sta.top())
19 sta.pop();
20 else
21 return 0;
22 }
23 return 1;
24 }
25
26 int main() {
27 vector<int> vec(N,0);
28 scanf("%d%d%d",&M,&N,&K);
29 for(int i=0; i<K; i++) {
30 for(int j=0; j<N; j++) {
31 int number;
32 scanf("%d",&number);
33 vec.push_back(number);
34 }
35 if(Check(vec)) printf("YES\n");
36 else printf("NO\n");
37 vec.clear();
38 }
39 return 0;
40 }
分析:
1、利用c++容器vector和stack模拟
[刷题] PTA 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 ...
- 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 ...
- [刷题] PTA 02-线性结构3 Reversing Linked List
链表逆序 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namesp ...
- [刷题] PTA 02-线性结构1 两个有序链表序列的合并
程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef int ElementType; 5 typedef st ...
- 02-线性结构4 Pop Sequence
02-线性结构4 Pop Sequence (25分) 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:陈越 单位:浙江大学 https://pta.p ...
- pat02-线性结构4. Pop Sequence (25)
02-线性结构4. Pop Sequence (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given ...
- 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 ...
随机推荐
- 提高Python的性能
01 使用哈希表的数据结构 如果在程序中遇到大量搜索操作时,并且数据中没有重复项,则可以使用查找而不是循环.举例如下: items = ['a', 'b',..,'100m'] #1000s of ...
- 全网最详细的Linux命令系列-mkdir命令
Linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 命令格式: mkdir [选项] 目录... 命令功能: ...
- OO结课了,狂喜
OO结课了,狂喜 哈哈哈哈哈 哈哈哈 哈哈 哈 第十三次作业 UML类图 简要分析: 本次作业是对UML类图进行解析,给到的接口里面已经有了很多类了,但是自带的类肯定是没有反应这些类的结构的.所以就自 ...
- vue 快速入门 系列 —— vue 的基础应用(下)
其他章节请看: vue 快速入门 系列 vue 的基础应用(下) 上篇聚焦于基础知识的介绍:本篇聚焦于基础知识的应用. 递归组件 组件是可以在它们自己的模板中调用自身的.不过它们只能通过 name 选 ...
- 利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
在Asp.net Web API中,对业务数据的分页查询处理是一个非常常见的接口,我们需要在查询条件对象中,定义好相应业务的查询参数,排序信息,请求记录数和每页大小信息等内容,根据这些查询信息,我们在 ...
- 2-69.x的平方根
题目描述: 解题思路: 计算平方根可以依次通过自然数递增,来判断两者相乘是否为目标值,是一个有序的序列,因此考虑使用二分查找. 由于x=0和1时,就是其本身,单独拿出来.当x>1时,其平方根一定 ...
- IDEA 全局搜索,搜索Jar包中内容
配置find in path Ctrl+Shift+F Step 1:点击Scope Step 2:点击"..."更多 Step 3:点击加号"+" Step ...
- isAssignableFrom与instanceof
isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点: isAssignableFrom()方法是从类继承的角度去判断,instanceof关键字是从实例继承的角 ...
- S-Trees UVA - 712
A Strange Tree (S-tree) over the variable set Xn = {x1,x2,...,xn} is a binary tree representing a ...
- Day01_01_java背景
1.Java背景 --由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称. --Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当 ...