表达式树 csu1655 文本计算器

该博客介绍了如何计算含有加减乘除及括号的表达式,推荐使用表达式树方法。当遇到复杂运算符号或括号时,构建表达式树能简化计算过程。通过找到同优先级运算符的最后位置,按优先级顺序进行分治计算。
摘要由CSDN通过智能技术生成

传送门:点击打开链接

题意:计算表达式,其中里面含有加减乘除括号


如果里面没有括号,那么使用栈简单维护一下即可

但是如果里面有括号了,或者有更复杂的运算符号,那么推荐使用表达式树来做

其实表达式树构造起来并没有想象中的那么麻烦,构造好之后直接分治算出答案即可

表达式树的核心思维就是找同优先级的最后一个运算符的位置,然后按照优先级递减顺序去考虑即可

#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout)
using namespace std;
typedef long long LL;
typedef pair<int, int>PII;
 
const int MX = 1e5 + 5;
 
char op[MX];
int lch[MX], 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文本计算器》是一款为经常需要使用计算器的用户而设计的软件,该软件使用简单、方便,不在注册表中写入任何字节,实为是一款绿色软件。 当需要计算数据时,在窗口中输入整个表达式表达式可以是加+、减-、乘*、除/、平方^、括号(),以及数学函数组合),按回车后可自动计算出结果,计算方法一目了然,便于查找计算中可能出现的错误。 支持的数学函数:cos(), sin(), tg(), ctg(), abs(), sgn() or sign(), sqrt(), ln(),sh() or sinh(), ch() or cosh(), th() or tanh(),cth() or coth(), heaviside()。 文本计算器采用多语言界面,方便国外朋友使用。 一、用法: 1、文本计算器具有关闭时是否保存计算结果的功能、计算结果的小数位选择功能,以及自动更新功能; 2、文本计算器打开时,将会自动加载上次的计算结果; 3、公式按钮中加入公式计算功能,公式框按回车可进行公式固定而数值变化的计算;; 4、输入数学表达式后,按回车键,自动计算结果; 5、一个表达式必须在一行内全部输入; 6、表达式可以是加+、减-、乘*、除/、平方^、括号(),以及数学函数组合。 二、支持的数学函数: 1、cos(), sin(), tg(), ctg(), abs(), sgn() or sign(), sqrt(), ln(),sh() or sinh(), ch() or cosh(), th() or tanh(),cth() or coth(), heaviside(); 2、示例:1+sin(30)(其中30为弧度)按回车键后显示1+sin(30)=0.012。 2010-03-06 21:11 V4.73 1、增加清除的快捷方式CTRL+D 2010-5-19 21:01 V4.76 1、去除按键声音功能,减少文件体积。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值