NOI-OJ 2.2 ID:1696 逆波兰表达式
2024-08-30 10:21:37
思路
很容易看出规律,一个运算符出现,其后就一定需要左值和右值,而左值和右值有可能还是运算符,这就需要继续递归。递归终止的条件就是遇到数字。
逆波兰表达式其实是构造成了一颗二叉树
例程
#include<iostream>
#include<cstdlib>
//atof函数用于将以字符数组形式
//存在的浮点数转化为浮点数
//cstdlib库中提供了atof函数
using namespace std;
double nbl(){ //逆波兰表达式函数
char s[100];
double num;
scanf("%s", s);
if(s[0]=='+') return nbl()+nbl(); //如果读到了运算符就递归
if(s[0]=='-') return nbl()-nbl();
if(s[0]=='*') return nbl()*nbl();
if(s[0]=='/') return nbl()/nbl();
return atof(s); //临界点是读到了浮点数
}
int main(){
printf("%f\n", nbl());
return 0;
}
最新文章
- (转) Graph-powered Machine Learning at Google
- eclipse新建项目,报错“Error: workspace\appcompat_v7\res\values-v21\styles_base.xml No resource found that matches the given name”
- Windows Server 2016软件定义存储:Storage Spaces Direct的关键特性
- css3中box-flex的使用
- linux下的汇编环境搭建(nasm)
- JNI编程(二) —— 让C++和Java相互调用(1)
- HDOJ 4821 String
- OpenGL—Android 开机动画源码分析二
- POJ2774(二分+哈希)
- Linux内存管理 (9)mmap
- 第三十三节,目标检测之选择性搜索-Selective Search
- linux命令之kill篇
- Python【每日一问】02
- ffmpeg基本用法
- Freemarker导出带图片的word
- 把旧系统迁移到.Net Core 2.0 日记 (13) --图形验证码
- 简话Angular 04 Angular过滤器详解
- 结对作业——随机生成四则运算(Core 第7组)
- 41-邮差送信(dfs)
- Knockoutjs+select2 人员搜索