#NOI1992B. 逻辑表达式
逻辑表达式
当前没有测试数据。
Description
由英文字符和符号和符号~、*、+、()组成逻辑表达式,英文字母表示变
量,变量有两种可能的取值,False或True;~、*、+。括号()可改变表达式的运算次序,且可以嵌套。
逻辑“非”运算的公式如下表:
A | ~A |
---|---|
TRUE | FALSE |
FALSE | TRUE |
逻辑“与”和逻辑“或”的运算公式如下表:
A | B | A*B | A+B |
---|---|---|---|
FALSE | FALSE | FLASE | FLASE |
TRUE | TRUE | ||
TRUE | FALSE | ||
TRUE |
两个逻辑表达式等价,当且仅当两个公式中相同名字的变量取任何一种值时两
个公式的值都相同。如:
A*(B+C) 与 AB+AC 等价
A*(~A+B) 与 A*B 等价
(~A+A)*BC 与 B+C 等价
AB+A~B 与 A 等价
而:
A+B 与 A*B 不等价
AB+~C 与 AE+~F 不等价
现要求你编程解决下列问题:
任务1 用键盘输入一个逻辑表达式,判断这个表达式的合法性;
**任务2 **将键盘输入的表达式化简,化简的表达式为
a1a2…aN+b1**b2…bM+…+x1x2*…*xL
其中ai、bj、…xk(i=1,2,…n; j=1,2,…m; k=1,2,…1)表示一个变量或一个变量的逻辑非;
任务3 将任务2中的化简的表达式化为最简形式。所谓最简有如下两个条件:
(1)表达式中的"+"号最少;
(2)满足的条件下"+"号最少。