题目描述

逆波兰表达式也叫后缀表达式,是一种把运算符后置的算术表达式,例如普通的表达式 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++题目:逆波兰表达式相关推荐

  1. LeetCode实战:逆波兰表达式求值

    题目英文 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...

  2. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  3. LetCode: 150. 逆波兰表达式求值

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...

  4. 简单计算器 逆波兰表达式

    问题 C: 悠派计算器 时间限制: 1 Sec  内存限制: 128 MB 提交: 7  解决: 2 [提交][状态][讨论版][命题人:qianyouyou] 题目描述 yoyo的小老弟小渣渣灰特别 ...

  5. 【数据结构与算法】之深入解析“逆波兰表达式求值”的求解思路与算法示例

    一.题目要求 根据逆波兰表示法,求表达式的值.有效的算符包括 +.-.*./,每个运算对象可以是整数,也可以是另一个逆波兰表达式. 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有 ...

  6. 调度场算法与逆波兰表达式

    本文的主要内容是如何求一个给定的表达式的值,具体思路就是先将普通算术的中缀表达式转化为后缀表达式,这一步用到的算法叫做调度场算法.然后对后缀表达式,也就是逆波兰表达式求值. 题目:http://acm ...

  7. 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

    栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...

  8. openjudge 逆波兰表达式 2694

    2018-3-15 逆波兰表达式 说实话,我觉得这个题目本身就很神奇,我在想这个题目的时候在纠结输入到底应该如何处理,后来在小伙伴的提醒之下写出了答案. 我们可以在函数里面等待输入,当输入的是运算符的 ...

  9. 信息学奥赛一本通(1198:逆波兰表达式)

    1198:逆波兰表达式 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9734     通过数: 5698 [题目描述] 逆波兰表达式是一种把运算符前置的算术表达 ...

最新文章

  1. $.ajax上传文件或者上传图片
  2. TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!
  3. Lync 2013部署(1)—AD准备
  4. 现代密码学4.1--消息完整性
  5. android log丢失(一)使用logd丢失log原理
  6. ios 重复引用 静态库_iOS-如果静态库(.a)包含重复的目标文件(.o),会发生什么?
  7. python文件式_python中文件操作的六种模式及对文件某一行进行修改的方法
  8. Fiddler使用教程(收藏)
  9. spring mvc 伪静态处理
  10. 31.整数中1出现的次数(从1到n整数中1出现的次数)
  11. ssm大学生时间管理分析系统设计与实现毕业设计源码130930
  12. win10资源管理器如何添加PDF文件预览
  13. Tomcat中Session钝化与活化实现步骤
  14. 动词ing基本用法_动词ing的几种常见用法
  15. 云仓一件代发模式与即时分账,会碰撞出什么火花?
  16. 广告坑死人,这年头如何辨别互联网金融的可靠性?
  17. 记录一次minerd肉鸡木马的排查思路
  18. Mac下查看已安装的jdk版本及其安装目录
  19. zcy算法入门笔记002-位图
  20. ChatGPT 大规模封号。。。

热门文章

  1. python阈值分割_OpenCV-Python入门教程5-阈值分割
  2. 关于各大浏览器兼容问题(1)
  3. wireshark:什么是wireshark
  4. Bash基础:在MacOS上确认版本与升级Bash的方法
  5. windows打开文件夹闪退,黑屏
  6. “硬核”武器-使用CDFS打造一个特殊的u盘
  7. BUU N1BOOK题目死亡ping命令
  8. 死亡之Ping(Ping of Death)攻击
  9. 论文阅读笔记 | 三维目标检测——MV3D算法
  10. 2022年Landsat8/9 Collection2数据 ENVI5.3打开(暴力打开,亲测有效)