【发布时间】:2016-12-09 21:25:37
【问题描述】:
给定一组 3 个数字的集合,找出最大的不相交集合。例如,令 C = {(3,4,5), (4,5,6), (1,2,3), (6,9,10), (7,8,9)}。此输入应返回 3,因为最大不相交集是 {(1,2,3), (4,5,6), (7,8,9)}。如何编写一个程序来输出最大不相交集的集合?
我考虑过从选择所有 5 个集合开始。然后,查看每个集合,看看删除该元素是否会影响其余集合。如果我们拿走 (3,4,5),它将允许我们保留 (4,5,6) 和 (1,2,3)。因此,它的净收益是+1。我们应该将其从最终列表中删除。然后,如果我们拿走 (4,5,6),它将允许我们保留 (6,9,10)。净收益为 0,所以不要删除它。删除 (1,2,3) 不会有任何影响。不要删除它。删除 (6,9,10) 将允许我们保留 (7,8,9)。不确定这是否有意义,但请告诉我您的想法!
【问题讨论】:
-
欢迎来到stackoverflow。 Stackoverflow 是一个询问特定编程问题的地方。一个更好的问题将包括您尝试使用您有疑问的特定部分的编码解决方案。你的问题非常广泛。请尝试缩小范围。看看What topics can I ask about here?。
-
最大不相交集 - 是指覆盖大多数元素,还是此类集的最大绝对数量?
-
这些集合总是由 3 个连续数字组成吗?相比之下,是否应该期待像
{2,3,5}这样的 3 数字集? -
@amit 表示第二个 -- 此类集合的最大数量
-
@AdrianColomitchi 他们不是连续的!
标签: algorithm