#2350. 前缀表达式

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:Special Judge
上传者: wjyyy

题目描述

给定一个前缀表达式,计算它的结果。

输入格式

一行若干段用空格分开的整数和四则运算符号,表示前缀表达式。

输出格式

一行一个数字,表示表达式的结果。

当你的答案与正确答案的相对或绝对误差在 10^{-3} 以内时算作正确。

样例

* + 1 2 + 3 4

21

数据范围与提示

输入的数字大小不超过 100 ,数字和符号的个数不超过 100 。 方法提示: 回到这个题,如果使用栈解决这个问题,只需要以下三步即可: 1、对前缀表达式进行从右至左依次扫描,当遇到数字时,将数字压入堆栈,遇到运算符时,弹出 栈顶的两个数。

2、用运算符对它们做相应的计算(栈顶元素 运算符 次顶元素),并将结果入栈。

3、重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。 例如,对于前缀表达式:- × + 2 3 4 5

1、从右至左扫描,将5、4、3、2压入堆栈。

2、遇到 + 运算符,因此弹出 2 和 3( 2 为栈顶元素,3 为次顶元素,注意与后缀表达式做比较), 计算出 2 + 3 的值,得 5,再将 5 入栈。

3、接下来是 × 运算符,因此弹出 5 和 4 ,计算出 5 × 4 = 20,将 20 入栈。

4、最后是 - 运算符,计算出 20 - 5 的值,即 15,由此得出最终计算结果。