1696:逆波兰表达式
来源:互联网 发布:js动态创建对象 编辑:程序博客网 时间:2024/05/17 00:55
1696:逆波兰表达式
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。
- 输入
- 输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
- 输出
- 输出为一行,表达式的值。
可直接用printf("%f\n", v)输出表达式的值v。 - 样例输入
* + 11.0 12.0 + 24.0 35.0
- 样例输出
1357.000000
- 提示
- 可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。
此题可使用函数递归调用的方法求解。 - 来源
- 计算概论05
#include <stdio.h>#include <iostream>#include <stack>#include <string.h>#include <queue>#include <math.h>#include <vector>#include <algorithm>#include <map>#include <set>#include <string>#include <iomanip>using namespace std;typedef long long LL;#define MAX 1001int a[MAX][MAX];int b[MAX][MAX];int res[MAX][MAX];char c1[200];char c2[200];double fun(){ scanf("%s", c1); //读入一个字符数组 int len = strlen(c1); if(len == 1 && !(c1[0] >= '0' && c1[0] <= '9')){ //根据第一个字符判断 是否数字还是操作符 如果是操作符 则进行递归调用 switch(c1[0]){ case '+' : return fun() + fun(); case '-' : return fun() - fun(); case '*' : return fun() * fun(); case '/' : return fun() / fun(); } }else { return atof(c1); //不可将 字符串直接转换成数字之类的。。。 //return atof(c1); //将字符数组 字符串 转换成double类型的数组 }}int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); printf("%f", fun()); return 0;}
阅读全文
0 0
- 1696:逆波兰表达式
- 波兰、逆波兰表达式
- 波兰表达式和逆波兰表达式
- 波兰表达式和逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式rpn
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式实验
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- 逆波兰表达式
- CentOS 6.5下Redis安装部署配置指南
- 计算日期间隔
- [Leetcode] 323. Number of Connected Components in an Undirected Graph 解题报告
- 可视化日历的实现
- continue结束本次循环和break跳出当前循环
- 1696:逆波兰表达式
- R 学习
- 循环的实例练习
- 英伟达Volta解读:专为深度学习而生的Tensor Core是什么?
- mysql for update行级锁
- 禁止用户查询某个列
- 并查集详解 (转)
- 组合主键映射
- C语言可变参数在宏定义中的应用