11个回答
展开全部
这是个有名的小问题。前面的人已经给出了两个正确的解了。为拓展大家思路,下面试给出较理论化的完全的讨论:
要在一次称量时找出某一袋,显然要求装轻金币的袋不同称的结果也不能相同,而这只要从各个袋中的取金币数两两不同就可以了。由于题设中要求每袋总共只有10个金币,所以问题的答案只有很有限的11种(不计袋的次序)。
首先,各个袋中不论取几个金币,称一次,得到的异常状态类型数只有11种。事实上,若一共选了n个(0 < n < 100)金币,得到的重量G必然不大于10n克,且比标准轻的克数(G - 10n)只能取0克、1克、2克、……、10克共11种可能。
无疑,每一种可能都代表从轻金币袋中取金币个数的一种可能。
一共有11种可能状态,我们只要在一次称量中用10种不同的状态区别出某一袋,所以状态是有盈余的。因此不难看出,这11种取法是:
每袋取:1,2,3,……,10个金币(没有0)
每袋取:0,2,3,……,10个金币(没有1)
每袋取:0,1,3,……,10个金币(没有2)
……
每袋取:0,1,2,……,9个金币(没有10)
下面再把这个问题做个小小推广:
如果不限制每袋金币总数,但问题变为:
10袋金币,其中k袋每个10克,(10 - k)袋每个9克,问,怎样用称一次称出所有不同的k袋?(不仅要求出几袋,且要求出是哪几袋)
推广了的问题的解也是不难的,我们的目标是在一次称量结果的数字中得到尽可能多的信息。在众多解中的一个解是:
每袋取:0,1,10,100,1 000,……,1 000 000 000个金币
正确性是显然的,重量差的每一位数代表一个袋。当然1 000 000 000这个数目过大,不可能的实际意义。上面用的是10进制的表示,如果采用2进制数,则可以每袋取:0,1,2,4,8,16,……,512个金币,也可以达到效果。
要在一次称量时找出某一袋,显然要求装轻金币的袋不同称的结果也不能相同,而这只要从各个袋中的取金币数两两不同就可以了。由于题设中要求每袋总共只有10个金币,所以问题的答案只有很有限的11种(不计袋的次序)。
首先,各个袋中不论取几个金币,称一次,得到的异常状态类型数只有11种。事实上,若一共选了n个(0 < n < 100)金币,得到的重量G必然不大于10n克,且比标准轻的克数(G - 10n)只能取0克、1克、2克、……、10克共11种可能。
无疑,每一种可能都代表从轻金币袋中取金币个数的一种可能。
一共有11种可能状态,我们只要在一次称量中用10种不同的状态区别出某一袋,所以状态是有盈余的。因此不难看出,这11种取法是:
每袋取:1,2,3,……,10个金币(没有0)
每袋取:0,2,3,……,10个金币(没有1)
每袋取:0,1,3,……,10个金币(没有2)
……
每袋取:0,1,2,……,9个金币(没有10)
下面再把这个问题做个小小推广:
如果不限制每袋金币总数,但问题变为:
10袋金币,其中k袋每个10克,(10 - k)袋每个9克,问,怎样用称一次称出所有不同的k袋?(不仅要求出几袋,且要求出是哪几袋)
推广了的问题的解也是不难的,我们的目标是在一次称量结果的数字中得到尽可能多的信息。在众多解中的一个解是:
每袋取:0,1,10,100,1 000,……,1 000 000 000个金币
正确性是显然的,重量差的每一位数代表一个袋。当然1 000 000 000这个数目过大,不可能的实际意义。上面用的是10进制的表示,如果采用2进制数,则可以每袋取:0,1,2,4,8,16,……,512个金币,也可以达到效果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼挺完整的,虽然两个方法基本同一个思路
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼的观点不错,同意
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询