积极答复者
逻辑表达式演算

问题
-
逻辑表达式有如下形式:
(1)原子式,用一个区分大小写的字母表示;
(2)组合式;若A 和B 是逻辑表达式,则(A|B)也是,意为“A 或 B”;(A&B)意为“A 和B”;
~A 意为“非A”;(A->B)意为“A 推出B”,或等价的“B 或非A”。
以上表达式的形式是固定的,其中的括号不能缺少,且字符间没有空格。
对于某个逻辑表达式,如果变换其中原子式的取值(真或假),该表达式的整体取值可能为真,则
称这样的逻辑表达式是可满足的,否则是不可满足的。比如下面的表达式都是可满足的:
q
(a|(b&c))
((a&~a)->z)
而这些是不可满足的:
(q&~q)
(((a|~b)&(~a|b))&(a&~b))编写程序,判断某个逻辑表达式的可满足性。
输入:每一行都是一个逻辑表达式(整个表达式最多10 个原子式,且不超过150 个字符)
输出:每行包含一个字符,’y’表示输入文件对应行中的逻辑表达式是可满足的,或者’n’表示输入文件
对应行中的逻辑表达式是不可满足的;
示例
输入:
q
(a|(b&c))
((a&~a)->z)
(q&~q)
(((a|~b)&(~a|b))&(a&~b))
输出:
y
y
y
n
n