各大公司在招程序员的时候往往喜欢考一些智力题,我在笔试的时候就碰到过这样的一道题:有一堆牌共二十张,其中一共有七张是正面朝上。你在蒙着眼睛的情况下如何将这堆牌分成两堆,并且每堆牌里面正面朝上的牌的张数一样。这道题20分,当时我们班去了几个人,但是没有一个人想的出答案。
这道题的解法很巧妙,回来在网上一搜,恍然大悟,原来是这样解!但当时笔试的时候却是绞尽脑汁也想不出个所以然。其实这种题有点像脑筋急转弯,如果你没想到点上去,是很难想出答案的,而且人往往受惯性思维的影响,特别是像我们这种受过十几年填鸭子般硬塞教育的大学生,思维很死板,很难转过这个弯。
其实解法很简单,并不需要很强的数学知识,稍微开动下脑筋就想得到。解法是这样:把这堆牌分成七张和十三张的两堆,然后把七张这堆牌翻过来,这样两堆牌正面朝上的张数肯定是相等的。我们这样分析,假设七张这堆牌里正面朝上的张数为k,则另外一推牌里的正面朝上的张数为7-k,我们把七张这堆牌翻过来后正面朝上的牌数同样变成了7-k张,所以两堆牌正面朝上的张数相等。