算法-有一堆物品,每个物品的重量不大于1000克且重量都是整数,有1-1000克的所有砝码,求最少需要用多少个砝码可以称出所有的物品重量
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
陷阱是已经称出质量的物品可以用来做砝码。
我觉得重点在于两点:
1. 对某个物品称重的时候,怎么尽可能少地去放,看要用哪个砝码
2. 如索疋所说,已经称出重量的物品可以当作砝码使用,但是不算使用了砝码
对于1,我觉得使用二分法查找是最快的了;对于2,先替换,然后再使用二分法
譬如,你放上去第一个物品是567克,那么你先放1000的砝码,然后500,然后750,然后625,然后562…………
当你得知第一个是567的时候,你把第二个和567克的已知物品分别放在两端,如果567较重,那么你只需要从 1~ 432的范围内使用二分法找出合适重量的砝码添加到第二个物品那端,平衡之后使用567-所添加砝码重量,就是第二个物品的重量了。
思路大致如上了,具体要多少,能否根据已知砝码的重量来尽快地缩小查找范围就要根据具体情况和已知的重量分布是否均匀来判断了。
其实这道题就是数字的二进制表示。例如:1可以表示为2^0,二可以表示为2^1……我们知道任何一个数字都可以表示为2^a+2^b+2^c……这样一共所需的项数就是最少的砝码个数值了。