C++ STL中stack栈(简单讲解+例题运用)

news/2025/2/23 5:41:00/

运用stack函数首先需要头文件#include<stack>,栈是先进后出

stack的常用函数:

  • push()——向栈顶压入元素
  • pop  ()——弹出栈顶元素
  • top   ()——访问栈顶元素
  • empty()——判断栈是否为空,为空是1

例题1: 

题目描述

牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾)
牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来:
一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串

根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串

现在给你一个字符串s,判断s是否是好串

输入描述:

输入一行包含一个字符串,长度不超过50

输出描述:

输出"Good" 或者 "Bad"

示例1

输入

ab

输出

Good

示例2

输入

aab

输出

Bad

示例3

输入

abaababababbaabbaaaabaababaabbabaaabbbbbbbb

输出

Bad
#include<iostream>
#include<stack>
using namespace std;
string str;
stack<string> s;
int main() 
{cin >> str;for (int i = 0; i < str.size(); i++){if (str[i] == 'a') //为a就入栈{s.push("a");}else {if (s.empty()) //为b时,栈又为空时,说明不是好串{cout << "Bad";return 0;}else //一个b就消去最前面的一个a{s.pop();//弹出栈顶}}}if (s.empty()) cout << "Good";//最后判断,若为空,则是好串else cout << "Bad";
}

 例题2:

题目描述

给你一个1->n的排列和一个栈,入栈顺序给定

你要在不打乱入栈顺序的情况下,对数组进行从大到小排序

当无法完全排序时,请输出字典序最大的出栈序列

输入描述:

第一行一个数n
第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格

输出描述:

输出一行n个数表示答案,用空格隔开,结尾无空格

示例1

输入

5
2 1 5 3 4

输出

5 4 3 1 2

说明

2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈
#include<iostream>
#include<stack>
using namespace std;
int n, a[1000010], maxn[1000010];
stack<int>st;
int main()
{int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = n; i >= 1; i--)maxn[i] = max(a[i], maxn[i + 1]);//判断该位元素以及之后最大元素for (int i = 1; i <= n; i++){st.push(a[i]);while (!st.empty() && st.top() > maxn[i + 1]){cout << st.top()<<" ";//访问栈顶元素st.pop();//弹出栈顶元素}}while (!st.empty())//不为空,则输出{cout << st.top()<<" ";st.pop();}}


http://www.ppmy.cn/news/428711.html

相关文章

账号被计算机远程终止,宽带远程连接被终止怎么办

宽带远程连接被终止?拨号上网的时候突然出现错误629,连接被远程计算机终止,这到底是怎么回事?面对连接宽带错误,下面让小编教你解决629被远程计算机终止的问题. 今天小编教你遇到宽带远程连接被终止&#xff0c;如何快速解决吧。 1.操作系统中存在错误&#xff0c;并提示您正…

台式电脑连接宽带远程计算机没反应怎么办,怎么处理宽带连接提示连接被远程计算机终止?...

现在有很多人使用宽带拨号上网&#xff0c;有个小伙伴的宽带有一天就出现了宽带被远程计算机终止&#xff0c;这是怎么一回事呢&#xff1f;这样一来他的宽带就无法上网了&#xff0c;电脑没了网基本什么也干不了。请大家和小编一起来看看这个问题有什么好办法可以解决呢&#…

连接远程电脑的时候提示:此计算机无法连接到远程计算机

本人遇到问题一&#xff0c;采用方法6&#xff0c;成功解决问题。 特此转官方解决方案以推广&#xff0c;文末附链接。 一、无法从客户端连接到远端 错误情况大致为&#xff1a;“此计算机无法连接到远程计算机。请尝试重新连接&#xff0c;如果问题仍然存在&#xff0c;请联系…

Windows远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

1、win键R打开运行器&#xff0c;使用mstsc -admin命令强制远程 2、输入远程服务器ip、用户名和密码&#xff0c;忽略证书问题的提示框&#xff0c;即可连接进入远程桌面 3、在远程桌面中&#xff0c;打开远程服务器的运行框&#xff0c;使用regedit命令打开注册表 进入计算机…

Windows远程桌面连接报错【无法连接到远程计算机】

问题如下&#xff1a; 解决方法&#xff1a; 1. 查看远程设置&#xff1a; 右键我的电脑&#xff0c;查看电脑属性&#xff0c;打开“远程”设置。 勾选上下图红框两个选项 2.查看防火墙&#xff1a; 查看防火墙是否开启&#xff0c;如果开启&#xff0c;点击“允许应用通过…

学校宽带被远程计算机终止,宽带连接被远程计算机终止是什么意思

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 宽带连接被远程计算机终止的意思是运营商服务器拒绝你的连接请求&#xff0c;可能是网费到期了。需要您检查计算机的设备是否运行正常和网络配置是否完好。 宽带(Broadband)在基本电…

网络连接不上计算机终止,电脑连接被远程计算机终止的解决方法-电脑自学网...

现在越来越多的人使用宽带拨号上网&#xff0c;有些网友说自己家电脑进行宽带连接的时候出现了“错误629&#xff1a;连接被远程计算机终止。如果您继续受到错误信息&#xff0c;您可以启用日志记录来做分析”的提示(如下图所示)&#xff0c;有什么办法解决&#xff1f;下面快来…

学校宽带被远程计算机终止,宽带连接提示连接被远程计算机终止怎么解决

1、检查用户名和密码&#xff1a;如果你的用户名和密码输入错误的话&#xff0c;很可能会引起629错误&#xff0c;重新输入用户名和密码&#xff0c;输入的时候看你的大写键是否开启了导致输入用户名出错&#xff0c;输入完成之后双击用户名&#xff0c;看看有没有多出空格。 2…