逆波兰表达式POJ——2694
问题描述:
逆波兰表达式是一种吧运算符前置的算术表达式,例如普通的表达式2+3的逆波兰表示为+23.逆波兰表达式的优点是运算符之间不必有优先级的关系,也不必有括号改变运算次序,例如(2+3)*4的逆波兰表示法为*+2 3 4.本题求解的逆波兰表达式的值。
输入数据:
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
输出要求:
输出为一行,即表达式的值。
输入样例:
* + 11.0 12.0 +24.0 35.0+
输出样例:
1357.000000
解题思路:
这个问题看上去有些复杂,如果只是简单地模拟计算步骤不太容易想清楚,但是如果用递归的思想就非常容易想清楚。这里根据逆波兰表达式的定义进行递归求解。在递归函数中,针对当前的输入有5种情况:1。输入是常数,则表达式的值就是这个常数;2.输入的是‘+’,则表达式的值是再继续读入两个表达式并计算出他们的值,然后将他们的值进行相加;3.输入‘-’;4.输入是‘*’;5.输入是‘/’;后三种情况与2.相同,只是计算从‘+’变成‘-’,‘*’,‘/’。
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
using namespace std;
double exp()
{
char a[];
cin>>a;
switch(a[])
{
case '+':return exp()+exp();
case '-':return exp()-exp();
case '*':return exp()*exp();
case '/':return exp()/exp();
default:return atof(a);
}
}
int main()
{
double ans;
ans=exp();
printf("%lf\n",ans);
return ;
}
逆波兰表达式POJ——2694的更多相关文章
- OpenJudge 2694 逆波兰表达式
1.链接地址: http://bailian.openjudge.cn/practice/2694/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 逆波兰表达式是一种把运算 ...
- [LeetCode] Evaluate Reverse Polish Notation 计算逆波兰表达式
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...
- AC日记——逆波兰表达式 openjudge 3.3 1696
1696:逆波兰表达式 总时间限制: 1000ms 内存限制: 65536kB 描述 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式 ...
- noi1696 逆波兰表达式
1696:逆波兰表达式 http://noi.openjudge.cn/ch0303/1696/ 总时间限制: 1000ms 内存限制: 65536kB 描述 逆波兰表达式是一种把运算符前置的算术 ...
- codevs5164 逆波兰表达式
题目描述 Description 逆波兰表达式是一种把运算符前置的算术表达式(又叫前缀表达式),例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也 ...
- lintcode 中等题:Evaluate Reverse Polish notation逆波兰表达式求值
题目 逆波兰表达式求值 在逆波兰表达法中,其有效的运算符号包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰计数表达. 样例 ["2", "1&q ...
- SDIBT2666——逆波兰表达式求值
逆波兰表达式求值(栈和队列) Description 从键盘上输入一个逆波兰表达式,用伪码写出其求值程序.规定:逆波兰表达式的长度不超过一行,以@符作为输入结束,操作数之间用空格分隔,操作符只可能有+ ...
- 逆波兰表达式 java
描述 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系, 也不必用括号改变运算次序,例如(2 + 3) ...
- c++实现将表达式转换为逆波兰表达式
https://github.com/Lanying0/lintcode 所属: 数据结构->线性结构->栈 问题: 给定一个表达式字符串数组,返回该表达式的逆波兰表达式(即去掉括号). ...
随机推荐
- hibernate5使用注解遇到的问题
问题描述 出现MappingException:Unknown entity,看到这个我以为在cfg配置文件中没有配置,实际上我是配置了的,那么问题出在那里呢,既然找不到实体,那么会不会是注解类出现了 ...
- LDAP服务部署
1.安装基本环境 # yum -y install openldap openldap-devel openldap-servers openldap-clients 2.配置LDAP服务端 (1)拷 ...
- Java.MyEclipse Web项目导入Eclipse
Java项目, 在MyEclipse中开发保存的目录结构和配置, 是不能直接在Eclipse中导入和运行的; 有时我们会碰到想把MyEclipse项目导入到Eclipse中开发的需求, 记录过程如下: ...
- MongoDB高级索引
1. 索引数组字段 创建和使用跟普通字段的索引一样. 2. 索引子文档字段: 创建索引: db.users.ensureIndex({"address.city":1," ...
- .5-Vue源码之AST(1)
讲完了数据劫持原理和一堆初始化 现在是DOM相关的代码了 上一节是从这个函数开始的: // Line-3924 Vue.prototype._init = function(options) { // ...
- Mayor's posters
Mayor's posters Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- eclipse运行中出错:unknown protocol: hdfs
出现这个错误因为你没有把core-site.xml和hdfs-site.xml放到项目下 程序运行开始就要调用这两个配置文件,这两个文件就是配置Hadoop时候的配置文件,只需要把至两个文件copy到 ...
- 在浏览器里点击input输入框输入,会展示默认的历史下拉菜单
给input设置autocomplete="off"属性可解决此问题
- Azure ASM虚拟机部署“安全扩展”
Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/secu ...
- win10提示管理员已阻止你运行此应用,如何强制运行
方法/步骤 这里以自己遇到的一个软件为例,下图就是禁止的图画: 在开始菜单中输入"cmd",然后以管理员身份运行: 按住"shift"键,同 ...