我正在尝试以有效的方式解决算法问题。下面是问题
我将以字符为例来解释这个问题,但实际上它可以是任何东西(char、int、string、double、object 等)。我怀疑这应该/会有所作为
我有包含一组字符的行列表,假设下面是六个列表
1 - A、B、C
2 - B、D
3 - E
4 - A
5 - F、B
6 - F、C
现在给定一个用户输入,我们希望找到给定输入的所有子集的联合,其任何组合都可以与上述任何行完全匹配。我将通过以下示例进行解释
输入案例 1 - A、C
现在在这种情况下,我们的输入为 A,C,因此我们将尝试匹配是否有任何行恰好包含 A,C,但我们不会找到任何行。接下来,我们将尝试查找仅包含 A 的任何行,我们发现有 1,然后我们将尝试仅查找 C 的行,但我们不会找到,因此在这种情况下,输出将是 A
输出 - A
输入案例 2 - F、B、C
现在在这种情况下,我们将看到没有仅包含 F、B、C 的行,因此我们将尝试组合,即 F,B &我们将有第 5 行,然后是 F,C,我们将看到我们有行号6 为它。考虑到这个输入的所有元素现在都被覆盖了,我们不需要继续进一步,但是如果任何元素都未被覆盖,我们还需要查看其他组合(比如 B、C & 然后 B & 然后 C & 然后 F )
输出 - F、B、C
输入案例 3 - L、B、C
现在在这种情况下,我们可以看到没有可以匹配任何行的上述元素的组合,因此输出为 Null
输出 - 空集
输入案例 4 - F、B、D、C
现在在这种情况下,我们看到没有包含所有元素的行,因此我们尝试查看是否有一些行匹配 F、B、D 或 B、D、C 或 F、C、D 等......并继续类似地我们将查找输出将是 F、B、D、C(F、B 和 F、C 和 B、D 的行涵盖所有元素)
输出 - F、B、D、C
我正在寻找一种有效的方式来获得输出。我可以以任何方式存储数据(设置/映射/多索引等)