【发布时间】: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 -> 没有战斗,也没有最低答案。你的意思是最大值吗?