洛谷 P1449 后缀表达式【Python】

题目链接
浅浅地记录我自己的洛谷刷题情况


目录

一、问题重述

1.题目描述

2.输入格式

3.输出格式

4.输入输出样例

5.说明/提示

二、大概思路

三、完整AC代码


问题重述

题目描述

这里放图片

输入格式

这里放图片

输出格式

这里放图片

输入输出样例

#样例1
输入:
输出:

说明/提示

这里放图片


大概思路

这里写思路


完整AC代码

在这里插入代码片

**


目录

一、问题重述

1.题目描述

2.输入格式

3.输出格式

4.输入输出样例

5.说明/提示

二、大概思路

三、完整AC代码


问题重述

题目描述 洛谷 P1449 后缀表达式【Python】_第1张图片

输入格式

在这里插入图片描述

输出格式

在这里插入图片描述

输入输出样例

输入:3.5.2.-*7.+@
输出:16

说明/提示

在这里插入图片描述


大概思路

看到后缀表达式这题首先就想到了二叉树的后根周游,但是这题并不用用到树这个数据结构,我们通过分析观察,发现此题与栈的特性(先进后出)很是相似,所以首先可以考虑用栈来做,具体分析如下图(以输入样例为例)

  1. 3,5,2依次入栈,如图
    洛谷 P1449 后缀表达式【Python】_第2张图片
    2.接下来读到运算符号“-”,代表着需要有两个元素弹出栈,需要注意不管是减法还是除法,先出栈的都是减数(除数),所以接下来会依次弹出元素2,5,将5-2的结果入栈后:
    洛谷 P1449 后缀表达式【Python】_第3张图片
    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())

你可能感兴趣的:(洛谷python题解,python)