弄了个栈

 1 #include<iostream>
 2 #include<cmath>
 3 #include<algorithm>
 4 using namespace std;
 5 struct stack
 6 {
 7     long value[100010];
 8     bool dir[100010];
 9     long size = 0;
10 };
11 void push(stack &one, long m_value, bool m_dir)
12 {
13     one.value[one.size] = m_value;
14     one.dir[one.size] = m_dir;
15     one.size++;
16 }
17 void pop(stack &one)
18 {
19     one.size--;
20 }
21 long get_value(stack &one)//注意这里,栈顶元素的value的下标应该是size-1,而不是size
22 {
23     return one.value[one.size-1];
24 }
25 bool get_dir(stack &one)
26 {
27     return one.dir[one.size-1];//注意这里,栈顶元素的dir的下标应该是size-1,而不是size
28 }
29 bool empty(stack &one)
30 {
31     if (one.size == 0) return true;//当栈中无元素时,返回true
32     else return false;//有元素时,返回false
33 }
34 long size(stack &one)
35 {
36     return one.size;
37 }
38 void handle(stack &one, long &m_value, bool &m_dir)//处理要放进的元素方向是0,而栈中的元素方向是1时的情况
39 {
40     if (empty(one)) push(one, m_value, m_dir);
41     else if (get_dir(one) == false) push(one, m_value, m_dir);//当栈顶元素的方向是0的时候,放入元素,结束递归
42     else
43     {
44         if (m_value > get_value(one)) { pop(one); handle(one, m_value, m_dir); }//新元素大于栈顶元素时,pop后递归
45         else return;//新元素小于栈顶元素时,不放入
46     }
47 }
48 int main()
49 {
50     stack one;
51     long n, m_value;
52     bool m_dir;
53     cin >> n >> m_value >> m_dir;
54     push(one, m_value, m_dir);
55     for (long i = 1; i < n; i++)
56     {
57         cin >> m_value >> m_dir;
58         if (m_dir == true) push(one, m_value, m_dir);
59         else if (get_dir(one) == false) push(one, m_value, m_dir);
60         else handle(one, m_value, m_dir);
61     }
62     cout << size(one) << endl;
63     system("pause");
64     return 0;
65 }
时间: 2024-08-27 00:32:28

弄了个栈的相关文章

[转载]A Crash Course on the Depths of Win32 Structured Exception Handling

转自:[已完工][经典文章翻译]A Crash Course on the Depths of Win32 Structured Exception Handling 原文题目: <<A Crash Course on the Depths of Win32™ Structured Exception Handling>> 原文地址: http://www.microsoft.com/msj/0197/Exception/Exception.aspx 原作者: Matt Pietr

2015-03-14

今天真的是没有做什么,主要就是研究算法,首先弄了弄递归转栈的问题,哎,算法这个东西也是慢慢来,不是急于求成的事儿啊,内功必须慢慢修炼.看完这个问题,再看看常见的问题,比如八皇后,斐波那契,汉诺塔都试着用递归转栈试一试. 明天不休息,但是也不编程,明天要为后天的考试做准备,我去很多题啊,明天要是再编程的话,后天博主就去裸考了,各位看官早点睡吧, 我去刷牙,然后也就睡觉了,晚安~

操作系统内核的绝佳学习材料——JOS

操作系统内核的绝佳学习材料--JOS 前言:关于JOS和一些经验之谈 这一学期的操作系统课使用的是MIT用于教学的JOS操作系统,并且StonyBrook在其基础上做了大量改动,最重要的变化就是从32位移植到了64位.因为个人之前曾系统学习过Linux 0.11内核(<操作系统内核Hack:(四)内核雏形>,实现到时钟中断部分停下了),深知自己从零开始实现内核的工作量.即便是如我个人实现的MiniOS这种简单的不能再简单的,也是需要花费很多时间和精力的.虽然这些付出非常值得(在上这门课时给我带

JAVA语言基础(二)20170511

1.重载: 在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可. 例如: int add(int x,int y){return x+y;} int add(int x ,int y,int z){return x+y+z;} double add(double x,double y){return x+y;} 2.内存结构:从来都弄不明白栈.堆区别,希望这次不一样的效果 栈内存:用于存储局部数据变量,当数据用完后,所占空间会自动释放. 堆内存:1)数组和对象,通过

「Algospot」津巴布韦ZIMBABWE

同时考验对状压DP和数位DP的理解: 传送门:$>here<$ 题意 给出一个数字$e$,现在对$e$通过$m$进行变换得到$x$:变换的要求是:1.只能改变原数字$e$各个数位的顺序(可以有前导零) 2.$x$是$m$的倍数 3. $x<e$ 问$x$有几种取值满足? 数据范围:$e \leq 10^14, m \leq 20$ Solution DFS怎么做是关键 这道题如果使用DFS,那么大体思路就是枚举每一位填放什么数字. 那么需要一个数组(状压)在此过程中来记录还可以用哪些数字

2004-2005 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2004)

https://codeforc.es/gym/101461 5题结束了,可能是只打了3个小时吧.要是E试试Java8去用高精浮点二分,或者坚持读下来发现F是个割点模板题?以后可能远古场还是不打了,要拉2015年以内的. D - City Game 悬线法求最大非1子矩阵,根据up[i][j]=(g[i][j]==0)?0:up[i-1][j]+1预处理出悬线.然后每一行用单调栈扫.注意悬线法,某个元素被弹出之后,弹出他的元素会继承他的管辖范围!所以当时的办法是弄两个栈,一个栈存单调递增的悬线下

2019年年终面试经历总结(含解析答案、推荐书籍、资料分享)

书籍推荐c++ : <effictive C++>.<SGI STL源码解析>(侯捷).<effictive STL>.<深入探索C++对象模型>.<c++ primer>等 网络:<计算机网络>.<图解tcp/ip> .<tcp/ip详解>.<UNIX 网络编程>(想进腾讯的小伙伴最好看看这个) 操作系统:<深入理解计算机系统>.<操作系统-精髓与设计原理>.<UNI

七方件业金离以提领前群约会ODjdidtlwfWv

为了从不同环节,尤其与广大使用人群直接关系的环节反映质量状况,对共享自行车投放点.运营仓库.生产企业等不同环节的产品抽查,覆盖了共享自行车从成品出厂到待投放的关键环节. 该负责人称,根据新车投放情况,结合共享自行车行业市场占有分布特点,本次重点抽查了摩拜.ofo.Hellobike三个品牌的产品,占本次抽查批次总数的83.3%.其中,在天津.无锡.武汉.广州.深圳.东莞6个城市抽查了9批次摩拜产品,占产品抽查批次总数的37.5%,抽查批次合格率88.9%,抽查不合格的1批次产品为待投放于广州市的

“全栈”工程师 请不要随意去做

今天我来给大家说说 "全栈工程师" 的事儿. 写这篇文的背景原因: 很简单就是最近越来越多的人想做[全栈工程师],他们的目标就是全栈,他们才入行短短1-2年,甚至刚从培训班出来:我的目标是做全栈,我啥都要学会,啥都会写,这样我就是大牛了,可以挣大钱,就算创业,我也不用招那么多人,一个人搞定一个产品,融资上市 ,CEO白富美,balabala... 我给他的回复是: 去你xx的,你连JS 数组和对象用法都搞不清,抄几个效果,看几个视频教程摸索摸索就要做万能人了? "全栈&quo