题解 BNDS OJ 1263 表达式求值
简要题意:
输入一个表达式,包括 +,-,*,/,(,)。求出表达式的值,保留两位小数(不知道你谷有没有这道题)。
提供一组样例:
样例输入:
1 | 9-(6+3*5)/3 |
样例输出:
1 | 2.00 |
策略分析:
这不是简单的数据结构入门题,我们只需要拿两个栈,一个存数字一个存运算符,碰到后括号就把它到前括号里的值全部算出来。因为在这6个运算符中,除了括号其他均是二元运算符,所以符号栈栈顶运算符(除了括号)一定匹配数字栈的头两个数字 ,按照运算优先级取出来算就可以了。运算优先级我们可以用一个 $ \operatorname{map} $ 来处理,具体细节见代码:
1 |
|
说些什么吧!