我遇到了这个问题:假设有两个重量1和3,你可以称重1,2(乘3-1),3,4(乘3 + 1)(使用两侧平衡)。现在找到最小权重数,以便您可以测量1到1000。
所以答案是1,3,9,27 ......
我想知道你是如何达成这样一个解决方案意味着3的权力。思考过程是什么?
来源:http://classic-puzzles.blogspot.com/search/label/Google%20Interview%20Puzzles
解决方案:http://classic-puzzles.blogspot.com/2006/12/solution-to-shopkeeper-problem.html
答案 0 :(得分:5)
以下是我解决问题的方法。假设您有权重a_1,a_2,...,a_r。
现在你可以减轻体重x你有
a_i1 + a_i2 + ... + a_ik = x + a_j1 + a_j2 + ... + a_jl
即x = Sum e_i * a_i
其中e_i为-1,0或1。
即。我们需要将每个数字写成a_i与系数1,0或-1的线性组合。
现在我们知道我们可以将基数3中的任何数字写为3的幂与系数(数字)0,1,2的组合。
类似的事实是,当我们在基数3中写一个数字时,我们也可以使用数字1,0和-1!
我们需要获得所有可能的数字这一事实导致您可能能够使用3的幂。
这个谜题是如此构造,它实际上运作良好,你可以很容易地证明它。
同样的想法可以应用于你有弹簧平衡的类似问题(即只有一个平底锅)。这里的系数是0和1,而2的幂则立即浮出水面。
另一个问题:
假设我说你有两个每个重量的副本和一个共同的平衡,并且必须权衡从1到61的所有重量。你会选择哪个重量?
答案 1 :(得分:3)
在基本层面考虑问题:
如果您想找到20公斤的最小重量,
最初:20 = 1 + 1 + 1 + 1 + 1 + 1 ....(20次)。使用二进制文件,你可以通过仅使用奇数权重将其分解为一半。
=> 1, 2, 4, 6, 8, 10...20 (for all odd weights even no.s can be "added" by 1)
... 2+1, 4+1, 6+1...18+1.
现在,如果还考虑“减法”,即两个平底锅都在使用,那么我们可以取3的倍数。
1 3 6 9 12 15 18 21 24 27 2 4 5 7 8 10 11 13 14 16 17 19 20 22 23 25 26 _________________ _________________ __________________ ___________________
我们看到所有权重都可以通过在3的倍数中加1和减1来生成
IMP:1是上面的基本单位 p>
接下来我们可以将3作为加法和减法的基本单位,因为它可以推导出所有其他数字。因此,考虑可以采用3-6-9,9-12-15,16-17-18等集合,中间项可以作为。
因此我们有,
1 3 9 15 21 27 2 4 5 6 7 8 10 11 12 13 14 16 17 18 19 20 22 23 24 25 26 _________________ __________________ __________________
现在9是我们的基本单位,因为我们可以直接访问1到9之间的任何数字。如果我们加或减,我们得到18的间隙。因此,我们消除了中间项:
1 3 9 27 2 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 _________________________________________________________
现在,可以推导出从1到27的每个数字。因此27成为我们的基本单位,下一个可以访问的差距将涉及27的加法和减法,给出54。
因此,我们可以得出结论,3的幂被重复,因为3的幂之间的差总是3(n)。
因此证明了。
答案 2 :(得分:2)
定理:对于i = 0到N,你需要权重3 ^ 0到3 ^ N来覆盖值1到S(N)= sum(3 ^ i)。
证明:
答案 3 :(得分:0)
假设您有一组权重,使用这些权重可以权衡任何数字,最多为n。现在你想扩展你的权重集来加权更多的数字,这意味着你想要权衡n + 1,n + 2等等。增加权重n + 1,n + 2,....,2n将是多余的。 系列中的下一个权重应该是((所有先前权重的总和)* 2)+ 1)
我认为你只是从基础案例1开始,然后继续努力。为了达到2,你的选择是{2,3,4 ...}。 4 - 1无法到达,2是多余的。再过一个数字后,模式出现了。