当前位置: 首页 > news >正文

求后缀表达式的值

后缀表达式的值

【题目描述】

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

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

栈中的变化情况:

运行结果:-47

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

【输入】

一个后缀表达式。

【输出】

一个后缀表达式的值。

【输入样例】

16 9 4 3 +*-@

【输出样例】

-47

 如果你还没有学习过栈这种数据结构,那这道题目将有点困难。

什么是后缀表达式

后缀式即逆波兰式,当计算机要计算一个表达式时,计算机不像人,能够直接看出各符号的优先级,对优先级高的先进行计算,所以需要后缀表达式来使计算机也能看懂并且计算表达式。

不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:16 9 4 3 +*-  

 4 + 3 = 7 

7 * 9 = 64

16 - 64 = -47

思路

一、先将字符串读入,中间有空格,普通的输入方式不行,要么输入一行要么直到回车才停止输入

二、遍历整个字符串,考虑会遇到哪些情形,会遇到加减乘除、数字、空格,如果是空格就跳过,是数字就入栈,是运算符就将栈顶和栈顶后面一个元素进行运算(注意顺序),然后将这两个元素出栈,再将运算的结果入栈

三、遇到 ' @ ' 就停止遍历

题解

#include <iostream>
#include <string>using namespace std;//数组模拟栈
long long stk[250]; //题目中说明了数据范围在2^64内,故用long long
int tt;int main(void)
{/*char arr[250];scanf("%[^\n]s", arr); // 输入一行,直到遇到\n*/// 或者可以这样写string arr;getline(cin, arr);long long temp = 0;for (int i = 0; arr[i] != '@'; i++ ){if (arr[i] == '+'){temp = stk[tt - 1] + stk[tt ];tt--; tt--;stk[++tt] = temp;//这几步可以简化 例如// stk [tt -1 ] = stk [tt -1 ] + stk [tt] ;// tt --;}else if (arr[i] == '-'){temp = stk[tt - 1] - stk[tt ]; // 注意前后顺序tt--; tt--;stk[++tt] = temp;}else if (arr[i] == '*'){temp = stk[tt] * stk[tt - 1];tt--; tt--;stk[++tt] = temp;}else if (arr[i] == '/'){temp = stk[tt - 1] / stk[tt ];tt--; tt--;stk[++tt] = temp;}else if (arr[i] == ' '){;}else{temp = 0; //入栈的数可能是多位数while (arr[i] != ' '){temp = temp * 10 + (arr[i] - '0');i++;}stk[++tt] = temp;}}printf("%lld\n", stk[tt]);return 0;
}

相关文章:

求后缀表达式的值

后缀表达式的值 【题目描述】 从键盘读入一个后缀表达式&#xff08;字符串&#xff09;&#xff0c;只含有0-9组成的运算数及加&#xff08;&#xff09;、减&#xff08;—&#xff09;、乘&#xff08;*&#xff09;、除&#xff08;/&#xff09;四种运算符。每个运算数之间…...

【FISCO-BCOS】十七、角色的权限控制

目录 一、角色定义 二、账户权限控制 1.委员新增、撤销与查询 2.委员权重修改 3.委员投票生效阈值修改 4. 运维新增、撤销与查询 一、角色定义 分为治理方、运维方、监管方和业务方。考虑到权责分离&#xff0c;治理方、运维方和开发方权责分离&#xff0c;角色互斥。 治理…...

vue怎样封装接口

Vue可以使用axios来发送HTTP请求&#xff0c;通过封装axios可以实现接口的统一管理和调用。下面是一个简单的封装接口的示例。 安装axios 在项目中安装axios依赖&#xff0c;可以使用npm或者yarn命令进行安装。 npm install axios --save创建api.js文件 在项目中创建一个ap…...

Typescript 笔记:函数

1 函数定义 function function_name() {// 执行代码 }2 函数返回值 function function_name():return_type { // 语句return value; } return_type 是返回值的类型。 return 关键词后跟着要返回的结果。 返回值的类型需要与函数定义的返回类型(return_type)一致。 3 函数…...

Axios 封装

请注意以下文件夹: utils下的setToken.js 是token封装(封装 Token-CSDN博客),service.js 是axios封装。 Axios封装: 1.安装axios 在项目终端下 输入: npm install axios --save 2.在main.js全局引入axios import axios from axiosVue.prototype.$axios =axios //挂…...

CocosCreator 面试题(一)Javascript的垃圾回收机制

JavaScript的垃圾回收机制是一种自动管理内存的机制&#xff0c;它负责检测和回收不再使用的内存&#xff0c;以便释放资源并提高性能。 标记清除&#xff08;Mark and Sweep&#xff09;&#xff1a;这是JavaScript最常用的垃圾回收算法。它的工作原理是通过标记活动对象&…...

【计算机网络】UDP协议编写群聊天室----附代码

UDP构建服务器 x 预备知识 认识UDP协议 此处我们也是对UDP(User Datagram Protocol 用户数据报协议)有一个直观的认识; 后面再详细讨论. 传输层协议无连接不可靠传输面向数据报 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的…...

Java架构师高并发架构设计

目录 1 导学2 什么是高并发问题3 高并发处理之道4 akf扩展立方体5 细化理念应对高并发5 总结1 导学 本章的主要内容是大型系统架构设计的难点之一,高并发架构设计相关的知识落到实际项目上,就是订单系统的高并发架构设计。我们首先会去学习到底何为高并发问题,先把问题搞清楚…...

【客观赋权法1】熵权法(MATLAB全代码)

熵权法(entropy weight method, EWM) 1 原理2 MATLAB代码3 案例参考赋权法(Weighting Method) 是一种常用的数据处理方法,它可以将不同变量之间的重要性进行区分,并赋予它们不同的权重,以反映它们对整体的贡献程度。 指标在评估体系中的重要程度可以用 指标权重系数表示…...

“注释: 爱恨交织的双重标准?解析注释在代码开发中的作用。”

文章目录 每日一句正能量前言观点和故事程序员不写注释的原因是什么如何才能写出漂亮的注释后记 每日一句正能量 水与水之间有距离&#xff0c;但地心下直相牵&#xff0c;人与人之间有距离&#xff0c;但心里时刻挂念&#xff0c;发条短信道声晚安&#xff0c;梦里我们相见。 …...

一种基于局部适应度景观的进化规划的混合策略

文章目录 标题摘要结论研究背景研究内容、成果常用基础理论知识潜在研究点文献链接标题 A Mixed Strategy for Evolutionary Programming Based on Local Fitness Landscape 摘要 进化规划(EP)的性能受到许多因素的影响(如突变操作符和选择策略)。虽然传统的高斯突变算子…...

Python数据攻略-Mongodb数仓无法写入方法汇总

Mongodb作为一个非结构化的NoSQL数据库,能存储各种复杂和多变的数据格式,如JSON。这使得Mongodb在实时数据分析和高性能查询中具有优势。 在使用Mongodb的过程中,可能会遇到写入失败的问题。常见的几种情况包括无法建立连接、认证失败和存储限制。 文章目录 诊断问题日志分…...

用什么工具来画UML?

2023年10月9日&#xff0c;周一晚上 目录 我的决定 关于rational rose UML工具有哪些 相关资料 我的决定 我决定用plantUML、draw.io或starUML就可以了 其实没必要在意工具&#xff0c; 重要的是能把图画出来、把图画好画规范&#xff0c; 重要的是知道怎么去画图、把意…...

SQLite3数据类型

存储类与数据类型 NULLINTEGER 有符号整数类型&#xff0c;存储为0,1,2,3,4,6或8个字节&#xff0c;取决于值的大小。REAL 浮点类型&#xff0c;存储为8字节的IEEE浮点数。TEXT 文本类型&#xff0c;将使用数据库指定的编码格式存储&#xff08;UTF-8,UTF-16BE,UTF-16LE)BLOB …...

K8S:K8S对外服务之Ingress

文章目录 一.Ingress基础介绍1.Ingress概念2.K8S对外暴露服务&#xff08;service&#xff09;主要方式&#xff08;1&#xff09;NodePort&#xff08;2&#xff09;LoadBalancer&#xff08;3&#xff09;externalIPs&#xff08;4&#xff09;Ingress 3.Ingress 组成&#x…...

flask入门

第一个Flask项目 创建后项目如下图 static存放静态文件&#xff0c;templates存放Jinja2模板&#xff0c;app.py是整个项目的入口文件 我们略微理解下app.py这里的代码 # 从flask这个包中导入Flask类 from flask import Flask#使用Flask类创建一个app对象 #__name__:代表当前…...

掌动智能:性能测试工具优势有哪些

由于应用程序的性能直接影响用户体验和满意度。而性能问题可能会导致应用响应缓慢、崩溃或无法处理大量用户请求。为了确保应用程序的高性能和可靠性&#xff0c;开发团队需要对应用程序进行性能测试。性能测试工具能够模拟真实场景下的负载并监测应用程序的性能表现&#xff0…...

实现一个简单的线性回归和多项式回归(2)

对于多项式回归&#xff0c;可以同样使用前面线性回归中定义的LinearRegression算子、训练函数train、均方误差函数mean_squared_error&#xff0c;生成数据集create_toy_data,这里就不多做赘述咯~ 拟合的函数为 def sin(x):y torch.sin(2 * math.pi * x)return y1.数据集的建…...

云原生Kubernetes:K8S集群kubectl命令汇总

目录 一、理论 1.概念 2. kubectl 帮助方法 3.kubectl 子命令使用分类 4.使用kubectl 命令的必要环境 5.kubectl 详细命令 一、理论 1.概念 kubectl是一个命令行工具&#xff0c;通过跟 K8S 集群的 API Server 通信&#xff0c;来执行集群的管理工作。 kubectl命令是操…...

Java使用模板导出word、pdf

使用deepoove根据模板导出word文档&#xff0c;包括文本、表格、图表、图片&#xff0c;使用WordConvertPdf可将word文档转换为pdf导出 模板样例&#xff1a; 导出结果&#xff1a; 一、引入相关依赖 <!-- 工具类--><dependency><groupId>cn.hutool&…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

今日行情明日机会——20250609

上证指数放量上涨&#xff0c;接近3400点&#xff0c;个股涨多跌少。 深证放量上涨&#xff0c;但有个小上影线&#xff0c;相对上证走势更弱。 2025年6月9日涨停股主要行业方向分析&#xff08;基于最新图片数据&#xff09; 1. 医药&#xff08;11家涨停&#xff09; 代表标…...