Algorithm 建设躲避球队

Algorithm 建设躲避球队,algorithm,primes,Algorithm,Primes,一位教练正试图组建一支躲避球队。每个玩家都分配了一个学生ID,如果一个玩家的ID除以另一个玩家的ID,他们就会战斗。所以沙发想要组成一个团队,这样团队中就没有人打架了。给定数字N(ID分配为1到N),找出最小数字K 沙发无法组成一个无人战斗的团队 input (N): 3 output (K): 2 input (N): 4 output (K): 2 例如,N=3 K=3,{1,2,3}-->玩家1和玩家2有一场战斗 K=2,{2,3}-->没有人打架 input (N): 3

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

input (N): 3 
output (K): 2 
input (N): 4 
output (K): 2 
例如,N=3

K=3,{1,2,3}-->玩家1和玩家2有一场战斗

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

input (N): 3 
output (K): 2 
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}-->没有人打架

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

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


在一次在线编码测试中,我被要求解决这个编码问题,但我不知道如何解决

我的回答是返回n+1中的素数

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

  • 案例1:n中的所有素数和数字1(平凡)
  • 情况2:n中的所有素数和n中的任何偶数(偶数可以除以2,这就消除了这个选项)
  • 情况3:所有素数和奇数(任何复合-非素数-奇数都可以被奇数素数除)

    关于案例3的数学证明,我不是100%肯定,但似乎是这样


  • 免责声明:我还没有收到采访反馈,这可能是完全错误的

    我的回答是返回n+1中的素数

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

  • 案例1:n中的所有素数和数字1(平凡)
  • 情况2:n中的所有素数和n中的任何偶数(偶数可以除以2,这就消除了这个选项)
  • 情况3:所有素数和奇数(任何复合-非素数-奇数都可以被奇数素数除)

    关于案例3的数学证明,我不是100%肯定,但似乎是这样


  • 免责声明:我还没有收到采访反馈,这可能是完全错误的

    我不明白?所以对于K=1->没有争斗,也没有最小答案。你是说最大值吗?我不明白?所以对于K=1->没有争斗,也没有最小答案。你是说最大值吗?有人知道吗?如果您能回答,我们将不胜感激!有人知道吗?如果您能回答,我们将不胜感激!