none
逻辑表达式演算 RRS feed

  • 问题

  • 逻辑表达式有如下形式:
    (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

    2010年11月20日 6:10

答案

全部回复