读书人

表达式等值判断,该怎么解决

发布时间: 2012-02-28 13:06:36 作者: rapoo

表达式等值判断
两个字符串
A OR B AND (C OR D)
(D OR C) AND B OR C

判断这两个字符串是否逻辑相等。

运算规则:
括号运算高于AND,OR
AND 高于OR

怎么做?

[解决办法]
脱去全部括号,化成析取范式,看析取因子是否相同。
[解决办法]
也别看成or and 了,看成* ,+就行了。

A+B*(C+D)
(D+C)*B+C

楼上的意思就是把括号都乘进去,
A+B*C+B*D
B*D+B*C+C

然后把第一个算式中中的每一项去第二算式中找,例如拿A去第二个式子里找,找不到就不等,找到了就把A从两个算式里都删掉,再取B*C去第二个算式里找,就这样。

怎么把算式乘开,我也不懂。
[解决办法]

探讨
两个字符串
A OR B AND (C OR D)
(D OR C) AND B OR C

判断这两个字符串是否逻辑相等。

运算规则:
括号运算高于AND,OR
AND 高于OR

怎么做?

[解决办法]
1. 怀疑你的题目有问题,第一个表示式里面有A,而第二个没有,这太荒唐了
2. 如果能确保两个表达式都是正确的,那么,将A, B, C, D依次取值true或false,检查所有组合即可。
共有2^4 = 16种组合。

读书人网 >软件架构设计

热点推荐