信息学奥赛一本通1331:【例1-2】后缀表达式的值

1331:【例1-2】后缀表达式的值


时间限制: 10 ms         内存限制: 65536 KB
提交数: 54713     通过数: 13547

【题目描述】

从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标志。

比如,16–9*(4+3)转换成后缀表达式为:16□9□4□3□+*–,在字符数组A中的形式为:

栈中的变化情况:

运行结果:-47

提示:输入字符串长度小于250,参与运算的整数及结果之绝对值均在264264范围内,如有除法保证能整除。

【输入】

一个后缀表达式。

【输出】

一个后缀表达式的值。

【输入样例】

16 9 4 3 +*-@

【输出样例】

-47

思路:

首先,先读入一个字符串a

然后循环字符串的每一位(a[0]~a[n-1])

用一个变量shuzi,等于-1时表示现在正在读入新的数字,否则,就把字符串a[i]上的数放进栈q里

如果a[i]上是一个数字,并且shuzi!=-1,说明正在读入一个数字,把栈q的顶部的数*10+(a[i]-'0')

如果读入到了空格,把shuzi=-1;

如果是加号:

            la=q.top();
            q.pop();
            lb=q.top();
            q.pop();
            ans=lb+la
            把ans入栈

其他符号也是这样


代码:

#include<bits/stdc++.h>
using namespace std;
int main() {stack<long long> q;long long shuzi=-1;string a;getline(cin,a);int i=0;long long la,lb,ans;while(a[i]!='@') {if (a[i] >= '0' && a[i] <= '9') {if (shuzi == -1) {shuzi = a[i] - '0';q.push(shuzi);} else {shuzi = q.top();q.pop();shuzi = shuzi * 10 + (a[i] - '0');q.push(shuzi);}}else if(a[i]==' '){shuzi=-1;}else if(a[i]=='+') {la=q.top();q.pop();lb=q.top();q.pop();ans=la+lb;q.push(ans);} else if(a[i]=='-') {la=q.top();q.pop();lb=q.top();q.pop();ans=lb-la;q.push(ans);} else if(a[i]=='*') {la=q.top();q.pop();lb=q.top();q.pop();ans=la*lb;q.push(ans);} else if(a[i]=='/') {la=q.top();q.pop();lb=q.top();q.pop();ans=lb/la;q.push(ans);}i++;}cout<<q.top();return 0;
}

今天很晚了,写的题解可能有些简略,excuse me,thank you!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C4D如何将多个选集设置为一个选集】

操作 首先&#xff0c;单击一个选集&#xff0c;将选集中的面高亮显示 接着&#xff0c;按着shift&#xff0c;点击另一个选集&#xff0c;点击右侧命令栏中的选择&#xff0c;即可多选另外的面选集&#xff0c;更多的面选集是同样的操作&#xff0c;按着SHIFT选择新的选集即…

关于python中的nonlocal关键字

如果在函数的子函数中需要调用外部变量&#xff0c;一般会看见一个nonlocal声明&#xff0c;类似下面这种&#xff1a; def outer_function():x 10def inner_function():nonlocal xx 1print(x)inner_function()outer_function()在这个例子中&#xff0c;inner_function 引用…

【一起来学kubernetes】7、k8s中的ingress详解

引言配置示例负载均衡的实现负载均衡策略实现模式实现方案Nginx类型Ingress实现Treafik类型Ingress实现HAProxy类型ingress实现Istio类型ingress实现APISIX类型ingress实现 更多 引言 Ingress是Kubernetes集群中的一种资源类型&#xff0c;用于实现用域名的方式访问Kubernetes…

万字解析设计模式之责任链模式、状态模式

目录 一、责任链模式 1.1概述 1.2结构 1.3实现 1.4 优缺点 1.5应用场景 1.6源码解析 二、状态模式 2.1概述 2.2结构 2.3实现 2.4优缺点 2.5应用场景 三、责任链模式实验 任务描述 实现方式 编程要求 测试说明 四、状态模式实验 任务描述 实现方式 编程要…

23年最新版pycharm找不到conda可执行文件解决办法

引言 我下载的是2023年最新版本的pycharm&#xff0c;不知道怎么安装pycharm的看我这篇文章。新版的 pycharm 安装好了之后就会出现一个问题&#xff0c;就是在配置 conda 虚拟环境找不到 conda 的可执行文件&#xff0c;出现了以下问题。 遇到这个问题有两种解决办法。 解决办…

ChatGPT文章批量改写伪原创软件说明文档

大家好&#xff0c;我是淘小白~ 最近有很多朋友咨询&#xff0c;chatGPT文章改写插件和改写软件&#xff0c;这个软件之前已经做出来了&#xff0c;用的朋友不是很多&#xff0c;这几天有不少咨询的&#xff0c;现在把说明文档补一下&#xff0c;(#^.^#) 1、软件语言 Pytho…

基于python+TensorFlow+Django算法模型的车辆车型识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介技术栈主要模块1. 数据预处理2. 模型构建3. 模型训练4. 模型集成5. 用户界面 系统工作流程未来改进计划 二、功能三、系统四. 总结 一项目简介 # 车辆车…

5.2每日一题(无穷级数敛散性:绝对收敛、比较法/比较法的极限形式、p级数)

一般看到绝对收敛和条件收敛——先看级数绝对值的敛散性

SpringBoot——配置及原理

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用&#xff1a;可以覆盖SpringBoot配置的默认值。 ◀ YML&#xff08;is not a Markup Language&#xff1a;不仅仅是一个标记语言&#xff09;&#xff1…

redis的数据类型的操作增删改查

redis的数据类型的操作增删改查 redis的高可用&#xff1a; 在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比&#xff08;365天&#xff09;99.9% redis的高可用的含义要更加宽泛&#xff0c;正常服务是指标之一数据容量扩展&#xff0c;数据的安全性…

一起学docker系列之八使用 Docker 安装配置 MySQL

目录 前言步骤 1&#xff1a;拉取 MySQL 镜像步骤 2&#xff1a;运行 MySQL 容器步骤 3&#xff1a;检查容器状态步骤 4&#xff1a;进入 MySQL 容器步骤 5&#xff1a;配置 MySQL 字符编码步骤 6&#xff1a;重启 MySQL 容器步骤 7&#xff1a;测试字符编码步骤 8&#xff1a;…

如何使用Python在3dMax控制网格对象?

我们以一个在3dMax中使用Python脚本在网格对象对象上创建水波变形作为例子。 首先&#xff0c;在3dmax创建两个对象&#xff0c;一个“box”对象&#xff0c;将长宽方向的分段设置的多一些&#xff08;目的是为了后面的水波变形&#xff09;&#xff0c;一个“点”帮助对象&am…