日记——12.3

学习了一下栈

但是是懂但不完全懂,我不理解有啥用,但也是了解了一下。

入栈出栈头文件

#include<cstdio>
#include<iostream>
#include<stack>

+一句using namespace std;

定义:stack<类型>名称;

入栈的函数:名称.push(填压入的数)

出栈函数:名称.pop()(不填)

栈的长度 名称.size()(不填)

栈顶:名称.top()(不填)

奶牛为例写一下感觉:

栈不是从第一个开始直到不满足结束,然后再看第二个,而是,从头判断到最后,一次性判断结束。

先把第一个数压入栈,看第二个数和栈顶(第一个数)的关系,如果满足栈顶大于第二个数就说明符合,即他能被栈顶看到(第一个数大于第二个数,第二个成为栈顶),再将该数压入栈,继续判断如果满足栈顶大于该数,说明第二个能看到该数,同时第一个也能。就加上栈长;如果不能符合条件,即栈顶小于该数,说明栈顶看不到该数,即将栈顶删除,栈顶变成第一个数,判断栈顶和该数的关系,如果栈顶大就说明栈顶那个数能看到该数,就可以加栈长,否则继续删除,在这个情况中栈已经清空,清空后无须再删除。。只能在把该数压入栈。。。然后继续判断。

栈是每个数都与前边的数比较,如第三个数判断时:直接判断第一个数能不能看到,第二个能不能看到。所以时间就会大大减少。

说实话就暂时理解了这一个题。其他都没想法,不了解用栈的方式。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值