【发布时间】:2014-11-20 18:02:24
【问题描述】:
我写信是想问是否有人知道该怎么做。我不需要代码,我只想要这样做背后的逻辑。所以我有一个集合 {A,B,C,D,E}。现在我想在集合中的值中找到和或或运算符的所有组合。
下面的一些例子。
A and B and C and D and E
A and B and C and D or E
A and B and C or D and E
据我所知,上述情况有 2^n-1 种可能性。因此,在上面的具体示例中,我们将有 8 种组合。
除了上述之外,集合中的值可以有两种可能性。为简单起见,让我们说 A 可以是真或假。 B、C、D 和 E 也是如此。所以我们可能会拥有如下内容:
A=True and B=True and C=True and D=True and E=True
A=True and B=True and C=True and D=True and E=False
A=True and B=True and C=True and D=True or E=True
等等。所以考虑到这一点,我们将有 2^(2 * n-1) 个组合。因此,在我们上面的具体示例中,我们将有 16 种组合,一组 4 种。
有没有一种算法已经可以做到这一点?如果没有,任何人都会有一些逻辑在 Java 中实现这一点
谢谢,
【问题讨论】:
-
您说有
2^n-1的可能性-这取决于您的元素处于一个特定的顺序。所以你的A,B,C,D,E更像是一个序列而不是一个集合。 -
每个变量赋值的可能性加倍,所以它是 2^(2*n-1),而不是 2*2^(n-1)。
-
你想要truth table 吗?
-
另一种表达khelwood所说的方式:如果您只考虑可以通过编写“AND”或“ OR" 两个变量之间,那么你不能形成任何涉及例如的表达式“A 或 C”。我怀疑这是你想要做的。
标签: java algorithm logic combinations permutation