首页 > 代码库 > 【算法题】用最少的砝码称出1到100克的物品
【算法题】用最少的砝码称出1到100克的物品
题目描述:
给定一个天平,用最少的砝码称出1到100克的物品,砝码重量任选
假设物品放在右边,砝码可以放在左边或者右边,那么有:放在左边砝码的重量 = 放在右边砝码的重量 + 物品的重量,即 放在左边砝码的重量 - 放在右边砝码的重量 = 物品的重量。
假设砝码放在左边用‘+’表示,放在右边用‘-’表示。那么容易知道∑±ai(ai取‘+’、‘-’或不取,三种情况)表示所有可能的情况。
给出一种方案:1、3、9、27、81(想想为什么底数取3???)
容易知道4个砝码∑±ai最多有34 = 81中可能的值,所以4个砝码不可能称出1到100所有的值。下面说明1、3、9、27、81的正确性。
对于30、31、32...3n,能够称出1到(3n+1 - 1)/ 2之间的任何一个值。
证明(数学归纳法):
n = 0 时能称出值 1、2。
假设 n = k - 1时成立,即对于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值。
当n = k时,由于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值,所以将每个砝码在天平中的位置对换会得到-1到-(3k - 1)/ 2,同时将3k放在左边得到(3k - 1)/ 2 + 1到3k - 1,又由于30、31、32...3k-1,能够称出1到(3k - 1)/ 2之间的任何一个值,所以将3k放在左边会得到3k + 1到3k + (3k - 1)/ 2 = (3k+1 - 1)/ 2
故当n = k时成立。
得证。
容易证明,除了1、3、9、27、81,1、3、9、27、60...80也都是可行的解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。