简单算法谜题
2手套选择
抽屉里有20只手套,其中5双是黑色的,3双棕色和2双灰色的。你只能在黑暗中挑手套,并且只有将手套挑出之后才能检查其颜色。最少要挑几次才能满足以下条件?
- 至少挑出一双颜色相同的手套。
- 所有颜色的手套都至少挑选出一双匹配的。
解:(a)由于手套分左右手,所以最坏情况是前十次都为同一只手,第十一次则必定能匹配成功。所以最少为11次。
- 同样考虑最坏情况,前十八次拿五双黑色和三双棕色以及同一只手的灰色,则第十九次一定会匹配成功。
3矩形分割
找出所有将一个矩形分成n个直角三角形的方法(n>1)。并且将这种切割的方法归纳成一个算法。
解
1.当n为2时沿矩形对角线切割可分为两个直角三角形,当n>2时,垂直于对角线的切割每次都会增加一个直角三角形,则n-2刀每次都会增加一个三角形。
解2.若n为偶数,先将矩形切割为n/2个需平行于边线切割n/2-1次,然后将n/2个矩形切割为