【问题标题】:Constructing dodge ball team构建闪避球队
【发布时间】:2015-04-06 07:20:50
【问题描述】:

一位教练正在尝试组建一个躲避球队。每个玩家都有一个学生证,如果一个玩家的 ID 除以另一个玩家的 ID,他们就会战斗。所以沙发想组成一个团队,这样团队中就没有人打架了。给定数 N(ID 被分配为 1 到 N),找出最小数 K 在沙发上无法组成一支没有人战斗的团队。

input (N): 3 
output (K): 2 

例如,N = 3,

K = 3, {1,2,3} --> 玩家 1 和 2 打架。

K = 2, {2,3} --> 没有人打架。

input (N): 4 
output (K): 2 

N = 4,

K = 4, {1,2,3,4} -> 超过一对玩家 (1,2), (1,3) 等,打架。

K = 3, {1,2,4}, {2,3,4}, {1,3,4} --> 玩家在所有队伍中战斗。

K = 2, {2,3} --> 没有人打架。

所以基本上,给定 N,找出一个沙发不能让 K 个玩家组成任何组合的最小 K,这样就没有人打架了。 (这也是 K'+1 的最大数量,沙发上可以找到至少一个没有人打架的 K' 团队。)

我和我的朋友想出的一个贪婪的解决方案是尝试从给定的 N 中找到最大集合。最佳集合必须包含大数字,因为如果我们开始放入小数字,2、3、...、所有这些数字的乘数不能包括在内。因此,只要新数字不是集合中已包含的某个数字的除数,我们就可以开始将 N 与 N/2 放在一个集合中。我们不完全确定这个解决方案是否正确,所以我们很乐意讨论我们的解决方案的正确性并听取其他人的想法。

在线编码测试期间,我被要求解决这个编码问题,但不知道如何解决。

【问题讨论】:

  • 我不明白?所以对于 K = 1 -> 没有战斗,也没有最低答案。你的意思是最大值吗?

标签: algorithm primes


【解决方案1】:

我回答这个问题的方法是返回 n + 1 中的质数。

k 是最小的数,它使得不可能有不打架的对,例如,至少一对数将另一个数平分,是吗?基于此,“最安全”的赌注是素数(因为它们不能相互分割)。一旦你添加了非质数,你肯定会有一对“战斗”对。

  1. 案例 1:n 中的所有素数和数字 1(微不足道)。
  2. 案例 2:n 中的所有素数和 n 中的任何偶数(偶数可以除以 2,这就消除了这个选项)。
  3. 情况3:所有素数和一个奇数(任何合-非素数-奇数都可以除以一个奇素数)。

    关于数学证明的案例 3,我不能 100% 确定,但似乎确实如此。

免责声明:我还没有收到面试的反馈,这可能是完全错误的。

【讨论】:

  • 有人知道吗?将不胜感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
相关资源
最近更新 更多