趣味算法两则~
2010-04-27 21:00
246 查看
今天在SL群里和别人扯淡,说到了算法,讨论了几道小题,现总结如下:
1、秤糖问题
有十包糖,每包里有10粒糖果,每包重1克,其中有一包糖很特别,每包重2克,现有一个电子秤,请只量一次找出哪包糖特别?
首先把所有糖包编号,从1-10。然后从1号拿1粒,2号拿2粒,3号拿3粒……10号拿10粒。然后秤得重量X。我们知道如果正常的话,重量应该是10!=55,结果肯定不是,因为有一包重了,所以X-10!就是结果。
2、小老鼠试验问题
有1000瓶药,有10只小老鼠,药可以混合,如果让这些小老鼠们只吃一次药就测试出哪瓶有毒?
首先将1000瓶药编号1-1000,把10只小老鼠也编上号1-10,然后将1-1000号转成二进制,让这些小老鼠按自己的编号试指定位的药,就是1号小老鼠试第一位为1的药,N号小老鼠试第N位为1的药,如果指定位小老鼠挂了,则1号有毒,如果没挂,则0号为有毒。这样就可以测试出有毒药的位编号,再转成10进制,就知道哪个药有毒了。
1、秤糖问题
有十包糖,每包里有10粒糖果,每包重1克,其中有一包糖很特别,每包重2克,现有一个电子秤,请只量一次找出哪包糖特别?
首先把所有糖包编号,从1-10。然后从1号拿1粒,2号拿2粒,3号拿3粒……10号拿10粒。然后秤得重量X。我们知道如果正常的话,重量应该是10!=55,结果肯定不是,因为有一包重了,所以X-10!就是结果。
2、小老鼠试验问题
有1000瓶药,有10只小老鼠,药可以混合,如果让这些小老鼠们只吃一次药就测试出哪瓶有毒?
首先将1000瓶药编号1-1000,把10只小老鼠也编上号1-10,然后将1-1000号转成二进制,让这些小老鼠按自己的编号试指定位的药,就是1号小老鼠试第一位为1的药,N号小老鼠试第N位为1的药,如果指定位小老鼠挂了,则1号有毒,如果没挂,则0号为有毒。这样就可以测试出有毒药的位编号,再转成10进制,就知道哪个药有毒了。
相关文章推荐
- 【趣味算法】三色旗问题:传统解法及基于队列的更好性能解法
- 趣味算法:国王和100个囚犯(据说是腾讯的面试题)
- 【算法】算法中的趣味数学(二)
- 【算法】算法中的趣味数学(一)
- C# 趣味小程序算法(1)—— 旋转阵
- 算法题 趣味算式110
- 趣味算法:老鼠试毒瓶问题
- 趣味算法-完全数
- 趣味算法-回文数
- 趣味算法-背包问题
- acm算法--每日一题c语言1(趣味算式)
- 趣味算法-青蛙过河
- 每日趣味算法(2015年9月18日)
- 趣味描述之匈牙利算法
- 八皇后问题 java实现,算法两则
- 【经典趣味算法】常胜将军算法
- 【算法】算法中的趣味数学(一)
- 趣味算法-城市之间最短总距离
- 趣味算法-亲密数
- 【趣味算法题】在数组中,对于所有元素,找出比当前元素大的下一个元素