我试图以有效的方式解决算法问题。以下是问题
我将以角色为例解释这个问题,但实际上它可以是任何东西(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
我正在寻找一种有效的输出方式。我可以以任何方式存储数据(set / map / multiindex等)