题目
你需要为飞往冰岛的午夜航班打包行李,但家里停电了,漆黑一片。你的衣橱里有六双鞋、六只黑袜子、六只灰袜子、六双棕色手套和六双褐色手套。不幸的是,屋里太黑,无法配对鞋子,也看不清颜色。
你至少需要拿多少只鞋、多少只袜子、多少只手套,才能确保:
- 得到一双配对的鞋;
- 得到两只同色的袜子;
- 得到一双配对的手套?
分析
解决这类问题的方法,是借助鸽笼原理(Pigeonhole Principle),也就是找出最大的那个数字,而你还不能达到你要的结果。将这个数字加1就是答案。
- 对于鞋子来说:最坏的情况,是拿到6只鞋子,且它们都不配对。注意:鞋子是分左右的!但第7只鞋子一定可以和前面的6只配成一对!所以,答案是
7。 - 对于袜子来说:袜子不分左右。1黑1灰两只袜子不能配对。但第三只袜子肯定可以配对。所以答案是
3。 - 对于手套来说:手套也是分左右的。最坏情况是你拿了12只手套,都不配对——也就是两个颜色的手套各拿了6只,还都不配对。但第13只手套肯定可以了!所以答案是
13。
思考
本题可以延伸到扑克牌上。扑克牌有4种花色,点数有13种。
- 需要拿多少张牌,才能保证手里有一对(pair)?答案:14张。
- 需要拿多少张牌,才能保证手里有三条(trips)?答案:27张。保证有一对需要14张,然后最坏情况下你又拿12张但没凑出三条,所以是
14+12+1=27张。或者这么算:你每种点数都有两张(13*2=26张),那么第27张肯定能凑出三条。 - 需要拿多少张牌,才能保证手里有同花(flush)?答案:17张。最坏情况下,你4种花色拿了4张(共16张)。但第17张肯定可以凑出一个同花。
- 需要拿多少张牌,才能保证手里有顺子?(straight)?答案:45张。这里有一个洞见:任何顺子(A2345 - TJQKA),都必须要么需要5要么需要10。最坏的情况是你拿到所有其他44张(
52-2*4),但就是没有5或者10,但如果再拿一张就必然凑出一个顺子。
注意,虽然顺子最难保证拿到,其次是三条,反而同花似乎最容易拿到。但再德州扑克等游戏中,同花胜顺子,顺子胜三条啊!