题目链接
浅浅地记录我自己的洛谷刷题情况
目录
一、问题重述
1.题目描述
2.输入格式
3.输出格式
4.输入输出样例
5.说明/提示
二、大概思路
三、完整AC代码
问题重述
题目描述
这里放图片
输入格式
这里放图片
输出格式
这里放图片
输入输出样例
#样例1
输入:
输出:
说明/提示
这里放图片
大概思路
这里写思路
完整AC代码
在这里插入代码片
**
目录
一、问题重述
1.题目描述
2.输入格式
3.输出格式
4.输入输出样例
5.说明/提示
二、大概思路
三、完整AC代码
问题重述
题目描述 ![问题描述](https://img-blog.csdnimg.cn/2a4c2854f0764c2a829e17a5ec6a4667.png#pic_center)
输入格式
输出格式
输入输出样例
输入:3.5.2.-*7.+@
输出:16
说明/提示
大概思路
看到后缀表达式这题首先就想到了二叉树的后根周游,但是这题并不用用到树这个数据结构,我们通过分析观察,发现此题与栈的特性(先进后出)很是相似,所以首先可以考虑用栈来做,具体分析如下图(以输入样例为例)
- 3,5,2依次入栈,如图
2.接下来读到运算符号“-”,代表着需要有两个元素弹出栈,需要注意不管是减法还是除法,先出栈的都是减数(除数),所以接下来会依次弹出元素2,5,将5-2的结果入栈后:
3.以下同理,当读到运算符的时候弹出栈里面的两个元素进行运算,运算后将结果存入栈中,到最后栈里面只会剩余一个元素,这个元素就是后缀表达式的运算结果,我们只需要将最后的结果输出出来即可
完整AC代码
s = input()
stack = []
a = ""
for i in s: # 执行入栈和出栈操作
if i == "+":
b = stack.pop()
c = stack.pop()
stack.append(c + b)
continue
elif i == "-":
b = stack.pop()
c = stack.pop()
stack.append(c - b)
continue
elif i == "*":
b = stack.pop()
c = stack.pop()
stack.append(c * b)
continue
elif i == "/":
b = stack.pop()
c = stack.pop()
stack.append(int(c / b))
continue
if i != ".":
a += i
else:
stack.append(int(a))
a = ""
print(stack.pop())