作者:iamlaosong
一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个黑球。
最后袋子里剩下一个球,你能最后判断球的颜色么?或者说,你能给出判断最后一个球颜色的算法吗?
具体可见编程挑战:黑白球 ,先思考,不要看下面的分析。
分析:
按题意,无论拿出来什么样的组合,黑球的数量变化是:要么数量不变,要么去掉两个黑球,白球变化则无规律可循,可能少一个,也可能多一个。所以,可以你可以不考虑白球的数量,只考虑黑球的数量,黑球的数量会越来越少,最后要么一个没有(偶数黑球),要么还剩一个(奇数黑球),这时再向外拿球,每次白球会少一个。
最后的结论是:黑球数量是偶数时,剩下一个白球,奇数时,剩下一个黑球。
原文地址:http://blog.csdn.net/iamlaosong/article/details/43938017