逻辑表达式去除括号问题

Xue^C 2010-06-09 03:03:03
例如:
输入:A and (B or C)
输出:A and B or A and C
只需要把括号去掉,不需要化为最简,当然上面只是简单的例子,复杂的表达式我就蒙了,求助各路神仙~
...全文
2187 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnefuil 2010-06-09
  • 打赏
  • 举报
回复
建表达式树,递归处理,在每层上把两个子表达式相乘(and)或者相加(or)
  • 打赏
  • 举报
回复 4
将and看做乘号,or看做加号。

先找最内层的括号,逐渐向外层推。

如果
1>括号里面没有or操作符
2>括号两侧都是{or操作符,括号,表达式头尾}中任意一个
那么去掉括号。
否则
将括号和and相连的那一端的一个子表达式(可能是一个变量,也可能是一个括号表达式)放入本括号内。
如果上面的子表达式是括号表达式,那么就要继续展开这个子表达式。

举例:
((A)and(B and C))or((D or E)and(F or G))
陆续变为
(A and(B and C))or((D or E)and(F or G))// A两边的括号里没有or
(A and B and C)or((D or E)and(F or G))// B and C两边的括号里没有or
A and B and C or((D or E)and(F or G))//A and B and C两边的括号里没有or
A and B and C or(( D and(F or G )or E and(F or G)))// (F or G)作为括号子表达式
A and B and C or((( D and F )or(D and G )or(E and F)or(E and G)))// 展开子表达式
A and B and C or(( D and F or D and G or E and F or E and G))//括号内没有or
A and B and C or(D and F or D and G or E and F or E and G)//括号两侧都是括号
A and B and C or D and F or D and G or E and F or E and G //括号两侧一边是or,另一边是末尾





ToBig佬 2021-07-15
  • 举报
回复
@天下第一好大人 跨越11年的时光来给大佬点赞
Xue^C 2010-06-09
  • 打赏
  • 举报
回复
对,不要括号了,只有and 和 or,用程序实现[Quote=引用 4 楼 gogdizzy 的回复:]
是只有and 和or 两种操作符吗?
[/Quote]
fire_woods 2010-06-09
  • 打赏
  • 举报
回复
分配率?
交换律?
结合律?
  • 打赏
  • 举报
回复
是只有and 和or 两种操作符吗?
Xue^C 2010-06-09
  • 打赏
  • 举报
回复
嗯,是的[Quote=引用 2 楼 budtang 的回复:]
你是要用程序来实现吗??
[/Quote]
budweiser 2010-06-09
  • 打赏
  • 举报
回复
你是要用程序来实现吗??
donkey301 2010-06-09
  • 打赏
  • 举报
回复
试试看递归能不能做

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧