C++题目:逆波兰表达式
题目描述
逆波兰表达式也叫后缀表达式,是一种把运算符后置的算术表达式,例如普通的表达式 2+3 的逆波兰表示法为 2 3 +。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如 (2+3)∗4 的逆波兰表示法为 2 3 + 4 ∗。本题求解逆波兰表达式的值,其中运算符包括 + − ∗ / 四个。
输入
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
运算符和运算数的个数之和不超过 100。
输入的总字符数不超过 1000。
输出
输出为一行,表达式的值,保留 6 位小数。
样例输入输出
样例输入 #1复制
11.0 12.0 + 24.0 35.0 + *
样例输出 #1复制
1357.000000
提示
可以使用 atof 函数将一个 char 数组转化为 double,方法如下:
char str[100]; scanf("%s",str); double val=atof(str);
代码1:
#include <bits/stdc++.h>
using
namespace
std;
double
sta[1000010];
int
top;
char
str[105];
int
main()
{
while
(cin>>str) {
if
(str[0]==
'+'
||str[0]==
'-'
||str[0]==
'*'
||str[0]==
'/'
) {
double
y=sta[--top];
double
x=sta[--top];
switch
(str[0]) {
case
'+'
: sta[top++]=x+y;
break
;
case
'-'
: sta[top++]=x-y;
break
;
case
'*'
: sta[top++]=x*y;
break
;
case
'/'
: sta[top++]=x/y;
break
;
default
:
assert
(
false
);
}
}
else
sta[top++]=
atof
(str);
}
cout<<setprecision(6)<<fixed<<sta[top-1]<<endl;
}
代码2:
#include <bits/stdc++.h>
using
namespace
std;
double
sta[1000010];
int
top;
char
str[105];
int
main()
{
while
(cin>>str) {
if
(str[0]==
'+'
||str[0]==
'-'
||str[0]==
'*'
||str[0]==
'/'
) {
double
y=sta[--top];
double
x=sta[--top];
switch
(str[0]) {
case
'+'
: sta[top++]=x+y;
break
;
case
'-'
: sta[top++]=x-y;
break
;
case
'*'
: sta[top++]=x*y;
break
;
case
'/'
: sta[top++]=x/y;
break
;
default
:
assert
(
false
);
}
}
else
sta[top++]=
atof
(str);
}
cout<<setprecision(6)<<fixed<<sta[top-1]<<endl;
}
上述代码都可以AC
请关注,点赞!
C++题目:逆波兰表达式相关推荐
- LeetCode实战:逆波兰表达式求值
题目英文 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...
- 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)
题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...
- LetCode: 150. 逆波兰表达式求值
提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...
- 简单计算器 逆波兰表达式
问题 C: 悠派计算器 时间限制: 1 Sec 内存限制: 128 MB 提交: 7 解决: 2 [提交][状态][讨论版][命题人:qianyouyou] 题目描述 yoyo的小老弟小渣渣灰特别 ...
- 【数据结构与算法】之深入解析“逆波兰表达式求值”的求解思路与算法示例
一.题目要求 根据逆波兰表示法,求表达式的值.有效的算符包括 +.-.*./,每个运算对象可以是整数,也可以是另一个逆波兰表达式. 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有 ...
- 调度场算法与逆波兰表达式
本文的主要内容是如何求一个给定的表达式的值,具体思路就是先将普通算术的中缀表达式转化为后缀表达式,这一步用到的算法叫做调度场算法.然后对后缀表达式,也就是逆波兰表达式求值. 题目:http://acm ...
- 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值
栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...
- openjudge 逆波兰表达式 2694
2018-3-15 逆波兰表达式 说实话,我觉得这个题目本身就很神奇,我在想这个题目的时候在纠结输入到底应该如何处理,后来在小伙伴的提醒之下写出了答案. 我们可以在函数里面等待输入,当输入的是运算符的 ...
- 信息学奥赛一本通(1198:逆波兰表达式)
1198:逆波兰表达式 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 9734 通过数: 5698 [题目描述] 逆波兰表达式是一种把运算符前置的算术表达 ...
最新文章
- $.ajax上传文件或者上传图片
- TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!
- Lync 2013部署(1)—AD准备
- 现代密码学4.1--消息完整性
- android log丢失(一)使用logd丢失log原理
- ios 重复引用 静态库_iOS-如果静态库(.a)包含重复的目标文件(.o),会发生什么?
- python文件式_python中文件操作的六种模式及对文件某一行进行修改的方法
- Fiddler使用教程(收藏)
- spring mvc 伪静态处理
- 31.整数中1出现的次数(从1到n整数中1出现的次数)
- ssm大学生时间管理分析系统设计与实现毕业设计源码130930
- win10资源管理器如何添加PDF文件预览
- Tomcat中Session钝化与活化实现步骤
- 动词ing基本用法_动词ing的几种常见用法
- 云仓一件代发模式与即时分账,会碰撞出什么火花?
- 广告坑死人,这年头如何辨别互联网金融的可靠性?
- 记录一次minerd肉鸡木马的排查思路
- Mac下查看已安装的jdk版本及其安装目录
- zcy算法入门笔记002-位图
- ChatGPT 大规模封号。。。
热门文章
- python阈值分割_OpenCV-Python入门教程5-阈值分割
- 关于各大浏览器兼容问题(1)
- wireshark:什么是wireshark
- Bash基础:在MacOS上确认版本与升级Bash的方法
- windows打开文件夹闪退,黑屏
- “硬核”武器-使用CDFS打造一个特殊的u盘
- BUU N1BOOK题目死亡ping命令
- 死亡之Ping(Ping of Death)攻击
- 论文阅读笔记 | 三维目标检测——MV3D算法
- 2022年Landsat8/9 Collection2数据 ENVI5.3打开(暴力打开,亲测有效)