1198:逆波兰表达式    <这里应该是波兰表达式(前缀表达式),而逆波兰指的是后缀表达式>
时间限制: 1000 ms         内存限制: 65536 KB
【题目描述】
逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式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
【来源】
No

//递归法
#include<bits/stdc++.h>
using namespace std;
char s[1001];
double v=0;
double bol()
{scanf("%s",s);switch(s[0]){case'+':return bol()+bol();break;case'-':return bol()-bol();break;case'*':return bol()*bol();break;case'/':return bol()/bol();break;default:v=atof(s);//atof(s)将字符串s转换为double的浮点数 }return v;
}
int main()
{printf("%.6lf",bol());return 0;} 
//手工解析模拟 逆推 栈
#include<bits/stdc++.h>
using namespace std;
char s[1001];
double v=0;
void get_value(stack<double> &s,double &a ,double &b)
{a=s.top();s.pop();b=s.top();s.pop();
}
int main()
{int k=0;string exp[100];stack<double> st;double a,b;cin.getline(s,1000,'\n'); for(int i=strlen(s)-1;i>=0;i--)    {if(s[i]==' ')  k++;else  exp[k].insert(exp[k].begin(),s[i]); }for(int i=0;i<=k;i++){if(exp[i]=="+"){get_value(st,a,b);st.push(a+b);}else if (exp[i]=="-"){get_value(st,a,b);st.push(a-b);}else if (exp[i]=="*"){get_value(st,a,b);st.push(a*b);}else if (exp[i]=="/"){get_value(st,a,b);st.push(a/b);}elsest.push(atof(exp[i].c_str()));}printf("%f",st.top());return 0;} 

1198:逆波兰表达式相关推荐

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

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

  2. 1198:逆波兰表达式(递归,前缀表达式,波兰表达式)

    前言:题干描述有问题 题干明明是前缀表达式呀,前缀表达式就是波兰表达式,怎么能叫逆波兰表达式呢?所以题目描述有问题! 逆波兰表达式,也叫后缀表达式 : 举例:a+b  --> a b +. 波兰 ...

  3. 1198:逆波兰表达式(递归)

    [题目描述] 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + ...

  4. 信息学奥赛一本通 1198:波兰表达式 | OpenJudge NOI 2.2 1696:波兰表达式

    [题目链接] ybt 1198:波兰表达式 OpenJudge NOI 2.2 1696:波兰表达式 注:ybt上描述的其实是波兰表达式,而题目中的文字都是逆波兰表达式,是笔误了,应该当做波兰表达式看 ...

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

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

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

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

  7. 数据结构:后缀表达式(逆波兰表达式)

    逆波兰表达式计算 package com.atchina.stack;import java.util.ArrayList; import java.util.List; import java.ut ...

  8. 数据结构:前缀,中缀,后缀表达式(逆波兰表达式)

    前缀表达式(波兰表达式) 前缀表达式的运算符位于操作数之前. 比如 (1+2)*3-4  对应的前缀表达式就是: - * + 1 2 3 4 前缀表达式的计算机求值 从右至左扫描表达式,遇到数字时,就 ...

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

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

最新文章

  1. android的UDC功能,Android实现搜索历史功能
  2. 微软宣布推出Azure Blockchain Tokens加密代币平台
  3. java可以转linux么_Java开发必会的Linux命令(转)
  4. java彩色的世界_JAVA真彩色转256色的实现
  5. 通过OAuth 2.0和Okta构建具有安全的服务器到服务器通信的Spring Boot应用
  6. MediaWiki安装配置(Linux)【转】
  7. android天地图使用,天地图嵌入到Android手机中
  8. CRM 实施计划和准备的8个步骤!
  9. python使用win32*模块模拟人工操作——城通网盘下载器(一)
  10. C# 添加Excel水印
  11. java byte数组转long型
  12. ubuntu 18.04 安装NFS 共享文件夹,Linux挂载,Mac 挂载
  13. [Python模块]根据姓名笔画数排序
  14. edvac是商用计算机吗,EDVAC(eniac与edvac的区别)
  15. SAP ABAP 业务开关和 SAP 电商云的 Feature Level
  16. 调焦后焦实现不同距离成像_调焦与焦距的关系
  17. 【Linux】SOCKET编程
  18. 如何建立一个网站?规划、设计、目的、原则、宣传(三)
  19. VUE2.0实现 高德地图 选择地点后 进行 行政区边界划分
  20. 天载配资点评指数放量下跌

热门文章

  1. 10.0 自定义SystemUI下拉状态栏和通知栏视图(八)之锁屏通知布局
  2. Python中类之间的关系
  3. autocad2008中文版
  4. 面试问题1 谈谈你对加班的看法
  5. webmatrix(WebMatrix升级)
  6. java jfm入门_image Java版*图像过滤入门示例及源码模拟绿坝过滤机制 - 下载 - 搜珍网...
  7. 计算机硬件日语,日语教材_有谁知道电脑硬件相关的用语?__沪江网
  8. 技嘉主板BIOS恢复方法
  9. 如何操作 WebOffice.ocx
  10. android从底部弹出动画效果,七星电子游戏 -七星电子游戏V8.5.51