模拟栈进出

方法一:

 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模拟

最新文章

  1. 升级npm
  2. [BZOJ1552][Cerc2007]robotic sort
  3. -bash: fork: retry: Resource temporarily unavailable
  4. LOMA280保险原理读书笔记
  5. Spring Ioc代码阅读
  6. Java是目前最广泛的_______编程语言
  7. (转)这个API很“迷人”——新的Fetch API
  8. “破锣摇滚”乐队(codevs 1444)
  9. Koala编译less
  10. HDU5596/BestCoder Round #66 (div.2) 二分BIT/贪心
  11. RxJava 平常使用
  12. Oracle存储过程格式
  13. mongo 多条件 查询
  14. js 邮箱正则匹配
  15. php+js 瀑布流源码
  16. ZOJ3640之简单慨率DP
  17. Go 语言常量
  18. Linux安装Tomcat,运行Eclipse,web项目
  19. 使用Cobbler批量部署Linux和Windows:Cobbler服务端部署(一)
  20. Windows 7硬盘安装CentOS 6.4 双系统 (WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04))

热门文章

  1. springboot的拦截器报错plicationFilterChain.java:193) ~[tomcat-embed-core-9.0.36.jar:9.0.36]
  2. Java学习之this关键字的使用
  3. Python基础(二十一):面向对象“类”第四课——魔法方法
  4. Kafka核心技术与实战,分布式的高性能消息引擎服务
  5. 西门子PLC开发笔记(一):PLC介绍,西门子S1200系列接线、编程、下载和仿真
  6. 【VsCode】常用的快捷键
  7. 【Nacos】Springboot整合nacos配置中心(一)
  8. hdu1251 hash或者字典树
  9. Windows 2003 Server远程代码执行漏洞集合
  10. SSM框架MavenWeb项目的测试