Algorithm 最多问8个问题,找出最重的球

Algorithm 最多问8个问题,找出最重的球,algorithm,interactive,Algorithm,Interactive,给出6个不同重量的球。目的是找到这些球中最重的一个 问题以问答方式进行,即我们必须提出问题,而问题解决者为我们提供答案。 每个问题由六个索引中的五个组成。返回的答案按此顺序为第三重球和第二重球的be指数。 我们最多可以问8个这样的问题来找到最重的球 例如: 假设球的指数为-1,2,3,4,5,6 这6个问题足以证明指数为6的球是最重的。还有两个问题可以问-我们不需要减少问题的数量。此外,这些查询可能会也可能不会订购所有6个数字,我们的目标是只找到最重的 我正在寻找一种解决这个问题的通用方法,最好

给出6个不同重量的球。目的是找到这些球中最重的一个

问题以问答方式进行,即我们必须提出问题,而问题解决者为我们提供答案。 每个问题由六个索引中的五个组成。返回的答案按此顺序为第三重球和第二重球的be指数。 我们最多可以问8个这样的问题来找到最重的球

例如:

假设球的指数为-1,2,3,4,5,6

这6个问题足以证明指数为6的球是最重的。还有两个问题可以问-我们不需要减少问题的数量。此外,这些查询可能会也可能不会订购所有6个数字,我们的目标是只找到最重的


我正在寻找一种解决这个问题的通用方法,最好不涉及基于案例的分析。

这似乎不是编程。我怀疑是你编造了这个谜题,因为如果它来自一个谜题网站,他们应该知道它永远不需要超过5个问题

首先,在你的前3个问题之后,答案是6。为什么呢问题2的答案没有改变的事实表明,要么5和6都>4>3,要么都<3<4。关于问题3,发现5>3因此6>3。事实上,5在2中出现,这意味着有些东西大于5,唯一可能的答案是6。所以我们结束了

你只需要知道你正在收集什么信息,并充分应用它

现在让我们用一种更一般的方法来解决这个问题,我们可以更快地解决它

第一轮我们什么都不知道,所以我们的体重是12345。这将产生一个答案xy。将x与6交换,然后重试。以下是可能性:

如果我们得到的是y z,z不是6,那么我们的答案是2个问题中的6个,原因与之前的答案相同。 如果我们得到y6或6y,那么它不是x,y或6。我们将x换成其他三个,直到第二位的答案改变为止。在最多5个问题中,发生这种情况的一个问题最重。 如果我们得到的是zy,而不是6,那么6比y轻,否则它会把它往下推。我们现在知道答案不是x,y,z或6。因此,我们只需将x与另外两个交换,然后应用与之前相同的推理,在最多4个问题中找出最重的问题。
我认为可以这样解决,举例来说:

输入:24,7,12,1986,6,99

Q1: Give me second and third from set {24,7,12,1986,6}
A1: second 24, third 12
现在从这个答案我们知道24和12永远不会是最重的。所以我们可以记住,idx的{0,2}不属于我们的答案。 现在让我们添加IDX5,我们对此一无所知

Q2: Give me second and third from set that includes our second from first answer {24,7,1986,6,99}
A2: second 99 third 24
现在我们得到了第二个,这是我们的新值,因此值为99的idx不会是最重的。如果答案1中的第二个答案保持不变,同样的情况也会发生。 另一方面,如果第二个变为第三个,我们已经知道,在IDX5处,比以前任何东西都重,这就是第一个

在当前状态下,我们有3个不是最重的索引:idx 024 idx 212和idx 599

现在让我们问一些设置与idx我们没有任何信息,如idx 1

Q3: Give me second and third from set {24,12,1986,6,99}
A3: second 99, third 24
这个答案并没有改变我们从答案2中得到的答案,所以我们知道它不在索引1之下。算法的其余部分是相同的推导步骤

即:

我们对IDX3一无所知

Q4: Give me second and third from set {24,7,12,6,99}
A4: second 24 and third 12

这里的第二个问题与之前的99有所不同,这意味着指数3起了作用,它就是第二个。你可以通过问自己如何得出这4个问题足以证明指数6的球最重的结论来回答你自己的问题。这是因为我事先知道了顺序。此外,我已经为这个问题找到了一个总体解决方案,但它涉及到太多的案例工作。我想知道更好的方法。你能重复索引吗?是的,我们可以重复索引。我大约有3/4是关于使用拓扑排序的提示-你已经在这里介绍了应用程序。我认为你已经进入了案例分析阶段,但是你很好地说明了概念,OP可以用任何一种方式解决问题。写得很好
Q4: Give me second and third from set {24,7,12,6,99}
A4: second 24 and third 12