9046:表达式求值

Time/Memory Limit:1000 MS/32768 K
Submitted: 125 Accepted: 55

 Problem Description

设计算法对一个合法的中缀表达式求值。简单起见,假设表达式只包含+,-,*,/,(,)等6个运算符,且操作数均为一位整数。

 Input

有多组数据,每组为一个合法的中缀表达式字符串,串长不超过50。

 Output

输出该表达式的计算结果。用一个整数表示。

 Sample Input

#4+2*3-9/3#
#3*(7-2)#

 Sample Output

7
15

 Hints

算法参见主教材P71
假设先出现的运算符为t1,后出现的为t2,算术四则运算的规则如下:
(1)先乘除,后加减。
(2)从左算到右。当两个运算符相同,或两个运算符是乘和除、加和减时,先出现的运算符优先级高。
(3)先括号内,后括号外。括号内的优先级高,即当+,-,*,/为t1时的优先级均低于'('但高于')'。
(4)'('的优先级等于')'。当左右括号相遇时,表示括号内的运算已经完成。
(5)假设每个表达式均以'#'开始,以'#'结束。所以'#'优先级等于'#'表示整个表达式求值完毕。
以下为t1和t2优先级关系:
t1\t2 + - * / ( ) #
 +    > > < < < > >
 -    > > < < < > >
 *    > > > > < > >
 /    > > > > < > >
 (    < < < < < =
 )    > > > >   > >
 #    < < < < <   =

 Author

hwt

 Recommend

zh