帮我做道C++题:题目描述 输入一个后缀表达式(字符串),只含有0~9组成的运算数及加(+)、乘(*)2种运算符。每个运算数或者运算符之间用一个空格隔开,不需要判断给你表达式是否合法。以@作为结束标志,@之前也有空格。 输⼊格式 输入一个字符串,长度(包括空格)不超过 200000 200000,中间只有数字,空格,以及2种运算符号。输入保证是一个合法的后缀表达式。连续操作符中间也有空格。每个数字不会超过 2 31 − 1 231−1 输出格式 输出运算结果,当答案长度多于 4 4 位时,请只输出最后 4 4 位,前导 0 0 不输出。
时间: 2023-02-11 07:23:17 浏览: 132
这道题是一道后缀表达式求值的题目。首先,需要将中缀表达式转换为后缀表达式。然后使用栈来计算后缀表达式的值。
解法如下:
1. 建立一个栈,用来存储运算符和运算数
2. 从右至左扫描后缀表达式
3. 遇到数字,将数字压入堆栈
4. 遇到运算符,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈
5. 重复步骤2至4,直到表达式的最右边
6. 将运算结果对最后4位取模
7. 返回结果
代码示例:
```
def eval_postfix(exp):
stack = []
for i in exp:
if i.isdigit():
stack.append(i)
else:
op2 = int(stack.pop())
op1 = int(stack.pop())
if i == '+':
stack.append(op1 + op2)
elif i == '-':
stack.append(op1 - op2)
elif i == '*':
stack.append(op1 * op2)
else:
stack.append(op1 / op2)
return int(stack[0]) % 10000
```
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044947.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)