我正在尝试编写一段代码,可以将布尔表达式的长度缩减到最小,因此该代码应尽可能减少表达式中的元素数量。目前我卡住了,需要一些帮助=[
规则如下:布尔表达式中可以有任意数量的元素,但仅包含AND和OR运算符以及括号。
例如,如果我传入一个布尔表达式:ABC+BCD+DE,则最佳输出将是BC(A+D)+DE,与原始表达式相比,它节省了2个单位空间,因为两个BC组合成了一个。
我的逻辑是,我将尝试找到表达式中出现最频繁的元素,并将其分解出来。然后我递归调用该函数来对分解后的表达式执行相同的操作,直到完全分解。
然而,如何在原始表达式中找到最常见的元素?也就是说,在上面的例子中,如何找到BC?似乎我必须尝试所有不同的元素组合,并找到每个组合在整个表达式中出现的次数。但这听起来非常幼稚。
有人能给出有效完成此操作的提示吗?甚至一些关键词我可以在Google上搜索。
规则如下:布尔表达式中可以有任意数量的元素,但仅包含AND和OR运算符以及括号。
例如,如果我传入一个布尔表达式:ABC+BCD+DE,则最佳输出将是BC(A+D)+DE,与原始表达式相比,它节省了2个单位空间,因为两个BC组合成了一个。
我的逻辑是,我将尝试找到表达式中出现最频繁的元素,并将其分解出来。然后我递归调用该函数来对分解后的表达式执行相同的操作,直到完全分解。
然而,如何在原始表达式中找到最常见的元素?也就是说,在上面的例子中,如何找到BC?似乎我必须尝试所有不同的元素组合,并找到每个组合在整个表达式中出现的次数。但这听起来非常幼稚。
有人能给出有效完成此操作的提示吗?甚至一些关键词我可以在Google上搜索。