06.栈习题

1353:表达式括号匹配(stack)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算法思想:

1.用string存储字符串,遍历字符串

2.遇到左括号就入栈

3.遇到右括号就匹配出栈,但是再出栈之前要判断栈是否为空

a.如果栈为空,说明没有与右括号匹配的左括号,右括号多了,不匹配!!

b.否则,说明左括号与右括号匹配上了,将左括号出栈

4.循环结束之后,判断栈是否为空

a.如果栈为空,说明左括号与右括号完全匹配上了

b.否则,说明左括号多了,不匹配!!!

#include <iostream>
#include <stack>
using namespace std;int main() {string s;stack<char> stk;getline(cin,s);for(auto c:s){//遍历字符串if(c=='('){//遇到左括号入栈stk.push(c);}else if(c==')'){//遇到右括号,先判断栈是否为空if(!stk.empty()){//如果不为空,则左括号与右括号匹配要出栈stk.pop();}else{//如果为空,说明已经没有与左括号匹配的右括号了,输出NOcout<<"NO"<<endl;return 0;}}}//遍历完之后,如果栈里面还有左括号说明不匹配if(!stk.empty()) cout<<"NO"<<endl;else             cout<<"YES"<<endl;return 0;
}

P1981 [NOIP2013 普及组] 中缀表达式求值

算法思想:

1.如果在1前面加个括号的话,就符合一个运算符一个数组的模式

2.遇到+后面数组就入栈

3.遇到*栈顶元素就计算

4.最后循环出栈,计算sum和

本题要保留后4为,必须边计算边求余,利用模运算的性质

#include <iostream>#include <stack>using namespace std;const int M = 1e4;int main() {stack<int> stk;char ch;int num, sum = 0;cin >> num;stk.push(num % M);while (cin >> ch >> num) {//一个字符一个数字的输入规律,开始循环if (ch == '+')//遇到+就入栈stk.push(num % M);else if (ch == '*') {//遇到*就计算stk.top() = (stk.top() % M * num % M) % M;}}while (!stk.empty()) {//最后栈里面的累加求和sum = (sum % M + stk.top() % M) % M;stk.pop();}cout << sum << endl;return 0;

1354:括弧匹配检验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算法思想:遇到左类型的括号就入栈,遇到右类型的括号就要出栈,但是出栈前要判断是否栈空和是否匹配,与1353类似省略

#include <iostream>
#include <stack>
#include <string>
using namespace std;
string s;
int main() {stack<char> stk;cin>>s;for(auto c:s){if(c=='['||c=='(')stk.push(c);else if(c==']'){if(stk.empty()){cout<<"Wrong"<<endl;return 0;}else{if(stk.top()=='[') stk.pop();else{cout<<"Wrong"<<endl;return 0;}}}else if(c==')'){if(stk.empty()){cout<<"Wrong"<<endl;return 0;}else{if(stk.top()=='(') stk.pop();else{cout<<"Wrong"<<endl;return 0;}}}}if(!stk.empty()) cout<<"Wrong"<<endl;else             cout<<"OK"<<endl;return 0;
}

1358中缀表达式值(expr)

#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {stack<int> stk;char ch='+';int num,sum=0;cin>>num;stk.push(num);while(cin>>ch>>num){if(ch=='@') break;if(ch=='+') stk.push(num);else if(ch=='-') stk.push(-num);else if(ch=='*') stk.top()*=num;else if(ch=='/') stk.top()/=num;}while(!stk.empty()){sum+=stk.top();stk.pop();}cout<<sum<<endl;return 0;
}

1355:字符串匹配问题(strs)优先级问题

#include<iostream>
#include<map>
#include<stack>
using namespace std;
map<char,int> mp;
void check(string s){stack<char> stk;for(int i=0;i<s.size();i++){if(mp[s[i]]>0){if(stk.empty()) stk.push(s[i]);else{if(mp[stk.top()]>=mp[s[i]]){stk.push(s[i]);}else{cout<<"NO"<<endl;return ;}}}else{if(stk.empty()){cout<<"NO"<<endl;return ;}else if(mp[stk.top()]+mp[s[i]]==0){stk.pop();}else if(mp[stk.top()]+mp[s[i]]!=0){cout<<"NO"<<endl;return ;}}}if(!stk.empty()) cout<<"NO"<<endl;else             cout<<"YES"<<endl;
}int main(){int n;cin>>n;//把所有左 右 括号都用map映射一下mp['<']=1;mp['(']=2;mp['[']=3;mp['{']=4;mp['>']=-1;mp[')']=-2;mp[']']=-3;mp['}']=-4;while(n--){string s;cin>>s;check(s);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2799796.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue的知识管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

1903_CoreMark白皮书阅读笔记

1903_CoreMark白皮书阅读笔记 全部学习汇总&#xff1a; g_embedded: 嵌入式通用技术学习笔记 (gitee.com) 再看ARM的内核架构介绍的时候看到了不同的内核都测试了一个CoreMark/Mhz的参数。从名称看&#xff0c;可以理解为是MCU的算力跑分。至于这部分究竟是测试了哪些功能&…

快速清理_卸载docker_找到不用的进程_centos磁盘爆满_清理磁盘---Linux工作笔记071

查看大文件,并且按照大小排名 cd / | du -h |sort -hr|head -30 可以看到根据不用的结果进行删除 可以看到在/data/dict目录很大,里面的都可以删除 然后再去卸载docker,要不然,没有磁盘是卸载不了的 systemctl stop docker systemctl stop docker.socket yum remove docker-…

Flutter Slider自定义滑块样式 Slider的label标签框常显示

1、自定义Slider滑块样式 Flutter Slider控件的滑块系统样式是一个圆点&#xff0c;thumbShape默认样式是RoundSliderThumbShape&#xff0c;如果想要使用其它的样式就需要自定义一下thumbShape&#xff1b; 例如需要一个上图样式的&#xff08;圆点半透明圆形边框&#xff09…

线性代数:向量空间

目录 向量空间 Ax 0 的解空间S Ax b 的全体解向量所构成集合不是向量空间 基、维数、子空间 自然基与坐标 例1 例2 向量空间 Ax 0 的解空间S Ax b 的全体解向量所构成集合不是向量空间 基、维数、子空间 自然基与坐标 例1 例2

ElasticStack安装(windows)

官网 : Elasticsearch 平台 — 大规模查找实时答案 | Elastic Elasticsearch Elastic Stack(一套技术栈) 包含了数据的整合 >提取 >存储 >使用&#xff0c;一整套! 各组件介绍: beats 套件:从各种不同类型的文件/应用中采集数据。比如:a,b,cd,e,aa,bb,ccLogstash:…

五种多目标优化算法(NSWOA、MOJS、MOAHA、MOPSO、NSGA2)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1NSWOA 1.2MOJS 1.3MOAHA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

Google插件Sider: ChatGPT Sidebar + GPTs GPT-4 Turbo Sider

Sider: ChatGPT Sidebar 可以使得满屏都是机器人&#xff0c;左侧栏可以打开访问GPT-4. 配置跳板机地址 google 搜索的右侧也有打开

关于在分布式环境中RVN和使用场景的介绍4

简介 在前面的文档中&#xff0c;我们介绍了RVN的概念&#xff0c;通过RVN可以解决的某类问题和使用技巧&#xff0c;以及处理RVN的逻辑的具体实现。在本文中&#xff0c;我们将要介绍关于如何使用RVN解决另一种在分布式系统中常出现的问题。 问题 假设我们创建了一个servic…

数据驱动决策:掌握高效数据分析的七大步骤

在这个数据驱动的时代&#xff0c;无论是企业决策还是个人发展&#xff0c;数据分析都扮演着至关重要的角色。然而&#xff0c;想要从海量数据中提炼出有价值的信息&#xff0c;并不是一件容易的事情。本文为你详细解读高效数据分析&#xff0c;让你的数据开口说话&#xff0c;…

ICRA 2024:UC伯克利、斯坦福大学等共同开发机器人强化学习套件(SERL),20分钟学会装配电路板!

近年来&#xff0c;机器人强化学习技术领域取得显著的进展&#xff0c;例如四足行走&#xff0c;抓取&#xff0c;灵巧操控等&#xff0c;但大多数局限于实验室展示阶段。将机器人强化学习技术广泛应用到实际生产环境仍面临众多挑战&#xff0c;这在一定程度上限制了其在真实场…

__proto__和protype的区别

__proto__和prototype是JavaScript中两个重要的概念&#xff0c;它们在对象原型链和继承中起着关键作用。下面将详细解释它们之间的区别&#xff1a; 定义和性质&#xff1a; prototype&#xff1a;这是每一个函数创建后都会拥有的一个属性&#xff0c;它指向函数的原型对象。这…

集合可视化:rainbow box与欧拉图

论文&#xff1a;A new diagram for amino acids: User study comparing rainbow boxes to Venn/Euler diagram 最近偶然看到了这篇论文&#xff0c;觉得很有意思&#xff0c;针对的任务是集合数据的可视化。 我们用示例来说明&#xff0c;比如图二的欧拉图&#xff0c;展示的…

安卓开发:挑战每天发布一个封装类02--Wav录音封装类AudioChannel 1.0

简介 库名称&#xff1a;AudioChannel 版本:1.0 由于项目需求录音并base64编码存到服务器中&#xff0c;就顺手改装了一个别人的封装类 原封装类地址:Android AudioRecord音频录制wav文件输出 - 简书 (jianshu.com) 描述&#xff1a;此封装类基于AudioRecord实现wav的音频…

2024年雾锁王国Enshrouded服务器搭建方法,最新教程

阿里云雾锁王国服务器搭建教程是基于计算巢服务&#xff0c;3分钟即可成功创建Enshrouded游戏服务器&#xff0c;阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月&#xff0c;阿里云服务器网aliyunfuwuqi.com亲自整理雾锁王国服务器详细搭建教程&#xff1a; 一、前…

MyBatis-Plus:通用分页实体封装

分页查询实体&#xff1a;PageQuery package com.example.demo.demos.model.query;import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.Data; import org.springframework.util.St…

设计模式浅析(六) ·命令模式

设计模式浅析(六) 命令模式 日常叨逼叨 java设计模式浅析&#xff0c;如果觉得对你有帮助&#xff0c;记得一键三连&#xff0c;谢谢各位观众老爷&#x1f601;&#x1f601; 命令模式 概念 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c…

实战打靶集锦-025-HackInOS

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查5. 提权5.1 枚举系统信息5.2 探索一下passwd5.3 枚举可执行文件5.4 查看capabilities位5.5 目录探索5.6 枚举定时任务5.7 Linpeas提权 靶机地址&#xff1a;https://download.vulnhub.com/hackinos/HackInOS.ova 1. 主机…

万界星空科技MES系统,实现数字化智能工厂

万界星空科技帮助制造型企业解决生产过程中遇到的生产过程不透明&#xff0c;防错成本高&#xff0c;追溯困难&#xff0c;品质不可控&#xff0c;人工效率低下&#xff0c;库存积压&#xff0c;交期延误等问题&#xff0c;从而达到“降本增效”的目标。打通各个信息孤岛&#…

Android进阶(二十九) 走近 IntentFilter

文章目录 一、什么是IntentFilter &#xff1f;二、IntentFilter 如何过滤隐式意图&#xff1f;2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter &#xff1f; 如果一个 Intent 请求在一片数据上执行一个动作&#xff0c; Android 如何知道哪个应用程序&#xf…