#P1253. 【挑战题】前缀表达式求值
【挑战题】前缀表达式求值
题目描述
前缀表达式是一种不含括号的算术表达式,它的运算符放在两个运算数的前面,严格从右向左进行运算。例如,2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。要计算前缀表达式的值,可以按照以下的步骤: step 1:从右向左扫描前缀表达式,设定一个栈来存储操作数。 step 2:如果当前字符是操作数,就将其压入栈中。 step 3:如果当前字符是运算符,就从栈中弹出两个操作数,用运算符对它们做相应的计算,然后将结果压入栈中。 step 4:重复上述过程,直到扫描完整个前缀表达式,最后栈中的唯一元素就是表达式的值。 例如,计算前缀表达式+ + 2 * 3 - 7 4 / 8 4的过程如下: (1)扫描到4,将其压入栈中。 (2)扫描到8,将其压入栈中。 (3)扫描到/,弹出栈顶的两个数,计算8/4,得到2,将其压入栈中。 (4)扫描到4,将其压入栈中。 (5)扫描到7,将其压入栈中。 (6)扫描到-,弹出栈顶的两个数,计算7-4,得到3,将其压入栈中。 (7)扫描到3,将其压入栈中。 (8)扫描到*,弹出栈顶的两个数,计算3*3,得到9,将其压入栈中。 (9)扫描到2,将其压入栈中。 (10)扫描到+,弹出栈顶的两个数,计算2+9,得到11,将其压入栈中。 (11)扫描到+,弹出栈顶的两个数,计算11+2,得到13,将其压入栈中。 (12)扫描结束,栈中只有一个元素,即13,这就是前缀表达式的值。
输入格式
一个字符串,表示前缀表达式,保证每个操作数都是10以内整数,且总长度不超过50
Output
一个整数表示浅醉表达式的结果
样例 #1
样例输入 #1
++2*3-74/84
样例输出 #1
13