【发布时间】:2013-06-02 01:28:06
【问题描述】:
[如果这涉及到已知问题,请告诉我]
我有 n 套不同尺寸的。集合中的每个元素都是唯一的。每个元素最多可以出现在两个不同的集合中。
我想对这些集合执行操作,但要避免重复或丢失任何元素。 问题:找出所有这 n 个集合中的哪些应该被删除,因为它们被其他集合所覆盖。
例如[a,b,c]; [一个]; [乙]。删除 [a], [b] 因为两者都被第一个覆盖。
例如[a,b,c]; [一个]; [b]; [光盘]。删除 [a,b,c] 因为所有三个元素都被剩余的集合覆盖。 注意:这里的 [a],[b] 单独不是有效的答案,因为 'c' 被复制。同样,[a],[b],[c,d] 不是有效答案,因为如果删除 'd' 将丢失。
【问题讨论】:
-
预期的套数是多少?集合中的最大元素数?不同元素的最大数量?
-
请注意,一般情况下可能没有解决方案。例如,对于集合 {a,b}、{b,c}、{a,c},没有避免元素重复的 {a,b,c} 覆盖。
-
嗯,在我的场景中,我预计大约 10 组;一个集合中的元素数可能是 1000s(最大元素数相同)。但是我从算法的角度提出了这个问题。 {a,b}{b,c}{c,a} 有两个以上的 a,b,c 副本。
-
对于集合
{a,b}{b,c}{c,a},a、b和c中的每一个都正好在两组中。这如何违反您的条件? -
[a,b,c,d], [a,e], [b,c], [d,e] 的结果是什么?