当前位置: 首页 > 知识库问答 >
问题:

从9枚硬币中找出假币

邹修真
2023-03-14

只是在这里遇到了这个简单的算法,从相同的称重硬币列表中找到奇数硬币(重达重)。

我可以理解,如果我们一次拿3个硬币,那么最小称重次数只有两个。

我是怎么找到答案的?

我人工试了一下一次称4套硬币,一次称3套硬币,一次称两个硬币,一次称一个硬币。

当然,只有当我们一次拿3个硬币时,最少的步数(两步)才是可以达到的。

问题是,你怎么知道我们必须拿3个硬币?

我只是想知道如何解决这个难题,而不是做所有可能的组合,然后把答案说成2。

1 http://en.wikipedia.org/wiki/Balance_puzzle

共有3个答案

吕俊才
2023-03-14

基本情况是这样的:

你怎么知道我们应该一次拿三枚硬币?

方法:

  1. 首先找到基本案例

在这里,基本情况是找到最大数量的硬币,您可以从中一次称重找到假币。你可以拿两到三枚硬币,从中可以找到假币。因此,最大值(二,三)= 三。

因此,这种方法的基本情况是每次取三个硬币来分配可用的硬币。

2.广义公式为3^n-3=(X*2),其中X为可用硬币数量,n为所需称重数量。(请记住n应该铺地板而不是天花板)。

考虑X=9个球。3^n=21并且n最高为2

因此,判断最小称重次数的算法类似于:

algo_Min_Weight[int num_Balls]
{
   return log base 3 ([num_Balls * 2] + 3);
}
柴辰阳
2023-03-14

它可以在信息论的基础上得到严格的证明,这是一门非常漂亮的学科,它为计算机科学奠定了基础。

大卫·麦凯那些精彩的讲座中有一个证据。(抱歉,但不记得是哪一个了:可能是前五个中的一个)。

路裕
2023-03-14

在每一次称重中,正好会发生三种不同的事情,因此使用两种称重,你只能看到九种不同的整体情况。因此,每次称重时,您需要确保消除至少三分之二(剩余)的可能性。保证每边称重三枚硬币就能做到这一点。每边称重四枚硬币可能会消除八枚硬币,但也可能只消除五枚。

 类似资料:
  • 所以这是一个经典的问题,在一套硬币中找到一个假币,只使用一个称重天平。为了完整起见,这里有一个这样的问题的例子: 一个著名的例子有九个(或更少)物品,例如硬币(或球),它们的重量相同,除了一个,在这个例子中它比其他的更轻--一个假币(一个奇怪的球)。差别只有在秤上称重才能察觉--但只有硬币本身才能称重。仅用两个称重就能将假币隔离吗? 我们所处理的情况是,只有一枚硬币是假币,而且我们知道它是怎么回事

  • 问题内容: 为此,我想将硬币兑换功能转换为记忆功能 ,因此我决定使用字典,以便字典中的键将是硬币,而值将是包含所有可更改“钥匙”的硬币的列表。硬币。 我所做的是: 我想得到一些建议,或者也许有另一种方法可以做到这一点。 谢谢。 编辑 备注版本: 问题答案: 当您可以只使用通用的预先编写的装饰器时,不必编写专门的记忆装饰器。例如,直接来自 PythonDecoratorLibrary 的以下 代码

  • 示例: 给定20美元,我想计算用硬币兑换20美元的方法={5美元,10美元,15美元。}硬币的顺序不重要。 这里的解决方案 解决方案是:总方式数=使用硬币不使用硬币:总方式数=计数(S,m-1,n)计数(S,m,n-S[m-1])

  • 我正试图解决一个经典的动态规划硬币兑换问题。这是一个家庭作业问题,我不是在寻找完整的解决方案,只是想找几个指针看看我做错了什么。 输入: 金额我们想用硬币支付一些价值 集合表示面值(1c、5c、10c、25c、100c、200c)的可用硬币数量 输出: 需要换手支付的最低硬币数。 假设: 收银机操作员有无限的硬币供应,知道如何给最佳的变化。 到目前为止,我试图做的是: 我试图建立一个数组C,使得每

  • 动态规划变更问题(有限硬币)。我正在尝试创建一个以以下内容作为输入的程序: 输出: 输出应该是大小为1的数组,其中每个单元格代表我们需要改变单元格索引量的最佳硬币数。 假设数组的单元格位于index: 5,内容为2。这意味着为了给出5(INDEX)的变化,您需要2(单元格的内容)硬币(最佳解决方案)。 基本上,我需要这个视频的第一个数组的输出(C[p])。这与有限硬币的大区别是完全相同的问题。链接

  • 所以我对编码不熟悉,我得到了一个任务,我需要做一个程序,用四分之一、一角、五分和一美分给不到一美元的零钱。然而,作业希望程序打印所需的最低硬币数量(例如,如果我输入58美分,那么输出应该是“2个25美分,1个镍和3个便士”,而不是“2个25美分,0个10美分,1个镍和3个便士”。本质上,如果没有某种硬币,那么程序就不应该打印它)。我一直在想如何制作它,这样程序就不会打印任何不必要的硬币。 这就是我