对游戏的查询数量猜对了数字?

时间:2018-10-25 08:08:46

标签: algorithm math set puzzle

我已经在math.stackexchange上问了这个问题,但没有得到任何答案。

问题是要解决一个两人猜数字游戏。假设第一个人为 A ,第二个人为 B 。 A在1和上限x之间选择数字n B 以(L,R)的形式对 A 进行查询,如果间隔中存在数字(< L,R)都包括在内。

B 将需要询问一组查询才能唯一确定数字x。因此,问题在于找到这样不同的查询集的数量,以使 B 能够唯一确定x,而与x的值无关。 A 返回整个系列查询的答案- B 仅在将 all 设为查询。

例如,假设n为2。可能的查询集为

{(1,1)}, 
{(2,2)}, 
{(1,1),(2,2)},
{(1,1),(1,2)},
{(2,2),(1,2)}, 
{(1,1),(2,2),(1,2)}   

问题:如何确定这些查询集中的哪些将唯一地标识 A 可能选择的任何整数?

我认为我们需要以某种方式将所有可能的数字从1隔离到n,否则无法唯一地确定数字。但是我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

设置1号以检测数字:

1设置为所有单对:{{1,1},{2,2},...,{N,N}}

设置2号以检测数字:

N包含一对,其中一对除外:{{1,1},{2,2},..,{x-1,x-1},{x+1,x+1},..,{N,N}}

无法识别号码的配对:

N-1对,长度为2:{1,2},{2,3},,{N-1,N}

N-2对,长度为3:{1,3},{2,4},,{N-2,N}

...

2对,长度为N-1{1,N-1},{2,N}

1对,长度为N{1,N}

无用对的总数为:

K = (N-1) + (N-2) + ... 2 + 1 = N*(N-1)/2

无用集合的总数为:

Z = C(K,0) + C(K, 1) + ... + C(K, K) = 2^K

查询数量

要找到答案,我们需要将所有正确的集合与所有其他类型的集合结合起来。

ANSWER = (Number of set #1 + Number of sets #2) * Z = (1 + N) * (2^K)

UDP :答案有误,请参见下面的评论