题目:
有4枚硬币,初始状态未知。你的眼睛被蒙住,看不到硬币的状态,但可以随便翻任何几个硬币。你每翻一次以后,如果4枚硬币的状态是全正面朝上或者全背面朝上,旁边的人会告诉你翻成功了。现在问你,最少翻几次可以保证成功?每次翻哪几枚?(百度2008年面试题)
解答:
这个题目的关键是分析翻转前后硬币组合中相同不相同的数目的关系,不必考虑硬币的顺序,因为考虑顺序的话,代价比较大。
方法一:尝试和回退的策略,假设一种可能性,然后尝试,不行回退尝试另一种可能性。
方法二:
1)固定一个硬币,翻转另外三个,如果成功,则结束;
2)如果不成功,那么前翻转的三个硬币有两种可能001或者110,而第4个硬币可能为0或1,则可能的情况是
a)前三个硬币是两个0,一个1,最后是0,即0010,前三个可以有多种排列情况,我们暂时不管,我们关心的是有几个0和几个1;
b)前三个硬币是两个0,一个1,最后是1,即0011,前三个可以有多种排列情况,我们暂时不管,我们关心的是有几个0和几个1;
c)前三个硬币是两个1,一个0,最后是0,即1100,前三个可以有多种排列情况,我们暂时不管,我们关心的是有几个0和几个1