gpt4 book ai didi

algorithm - 子集和集封面

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:15:38 24 4
gpt4 key购买 nike

我们有许多锁,要打开这些锁,我们需要一组人来打开那把锁。鉴于我们拥有的人数和需要打开的锁的数量,我们需要一个关于如何在可用人员之间分配 key 的规范,以便打开该锁所需的任何数量的人都可以打开它,但不能少所需人数可以打开它。

人数范围为1-9,开锁所需人数范围为0-9

考虑以下示例

可用人数 = 2

所需数量 = 1答:{{0},{0}}

他们中的任何一个都可以打开它,因此他们都获得了相同的 key 。

可用人数 = 5

所需数量 = 3

答案:{{0, 1, 2, 3, 4, 5},{0, 1, 2, 6, 7, 8},{0, 3, 4, 6, 7, 9},{1 , 3, 5, 6, 8, 9},{2, 4, 5, 7, 8, 9}}

谁能帮我解决这个问题。

谢谢

最佳答案

n 为总人数,令m 为打开所有锁所需的最少人数。

那么,有两个要求:

  • 对于每把锁,任何一组 m 人都必须至少包含一个拥有该锁 key 的人。换句话说,没有给定键的人的集合必须少于 m 人。所以每个 key 必须分发给至少 n - m + 1 个人。
  • 对于每组 m - 1 个人,必须至少有一把锁,但他们都没有 key 。换句话说,如果你反过来看看“其他人”的集合,它有 n - m + 1 个人,你可以说对于每一组n - m + 1 个人,必须至少有一个 key 由该集合持有。

将这两个要求放在一起,我们实际上在 (keys) 和 (n - m + 1 人的集合) 之间有一个一对一的映射。

所以你只需要找到所有 n - m + 1 个人的集合(这在 O(2n) 时间,并且在 O(C(n, nm + 1)) 次)。为每个集合创建一个 key 并将其分发给该集合中的人。

关于algorithm - 子集和集封面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com