如果有帮助,点一点关注@_@
题目要求
有n个元素,m个集合,每一个集合里的元素都是这n个元素的一部分,集合之间相互独立,可能有交集也可能没有,求解最少用几个集合可以将元素完全覆盖
贪心算法
一个集合的价值有两点:
- 选了这个集合后,有多少个原来没被覆盖的元素被覆盖了,这个值刚开始就是每个集合元素的个数。
- 选了这个集合后,会使其他可选集合的价值降低多少,这个降低数就是两个集合之间的交集的元素个数。
每次选取价值最大的集合覆盖,显然这个选择会对尚未使用的集合的价值产生影响,更新其他尚未使用的价值,重复此操作