利用栈求逻辑运算表达式的真值

本文介绍了一种利用栈解决逻辑运算表达式求值问题的方法。通过两个栈,一个存储运算符,一个存储运算数字,遵循运算符优先级规则,实现了从输入的逻辑表达式中得出0或1的真值。算法首先将操作数栈设为空栈,然后依次处理表达式字符,遇到运算符时与栈顶运算符比较优先级,直到所有运算完成。
摘要由CSDN通过智能技术生成

今天浙江理工校赛的D题。

比赛结束后在网上看了文章才做出来的。


Problem D: 逻辑运算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 248  Solved: 36

Description

 还记得大学里学过的模电么,今天就让我们将与或非变成一道题吧。

给你一个与或非的表达式,求出这个表达式的值,表达式总共有八种字符。

三种逻辑运算符按照优先级排列如下。

‘!’:表示取反。

‘&’:逻辑与。

‘|’:逻辑或。

两个字符‘T’,‘F‘分别表示true和 false。

另外还有左右括号,空格三种字符。跟一般的表达式一样,括号可以改变优先级。

 

Input

每组数据输入一行字符串,字符串长度小于等于100.

Output

 输出一个数0或1,表示逻辑表达式的答案。

Sample Input

T

Sample Output

1


用2个栈,一个存储运算符,一个存储运算的数字。

对于连个相继出现的操作符θ1和θ2 有三种关系:大于、等于和小于。由此可以列出“+-*/”之间的优先级。如下表:


     !      &     |      (      )      #

!    >     >     >     <     >     >

&   <     >     >     <

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值