注:本系列博文是依据Algorithmic Puzzles学习笔记,每一小节包含5个谜题,在博客最后仅给出提示,具体答案见下一期博客

谜题1:狼羊菜过河

问题描述:一个人在河边,带着一匹狼、一只羊和一颗卷心菜。他需要用船将这三样东西运至对岸,然而,这艘船的空间有限,只容得下他自己和另外一样东西。若他不在场的话,狼就会去吃羊,羊就会去吃菜,问此人如何才能把这三个乘客都送至对岸?

谜题2:手套选择

问题描述:在抽屉里有20只手套,其中5双黑手套,3双棕手套和两双灰色手套。你只能在黑暗中挑手套,并且只有将手套挑出之后才能检查其颜色。至少要挑几次才能满足以下条件:

         (a)至少挑出一双颜色匹配的手套

         (b)所有颜色的手套都至少挑出一双匹配的

谜题3:矩形分割

找出所有将一个矩形分成n个直角三角形的方法(n>1)。并将这种切割的方法总结成一个算法

谜题4:士兵摆渡

25个士兵组成的小分队需要渡河,可是河水宽且深,周围也看不见桥,他们发现河岸边有一个小船,两个十二岁男孩正在上面玩耍。船很小,仅能承载两个男孩或一个士兵的重量。士兵应该怎么样过河?在你用的算法中,船从一个岸边到另一个岸边来回共计几次?

谜题5:行列变换

怎样才能将下图中左边的数字阵列(4x4)转换成右边(4x4)的样子?要求只能对阵列进行行交换和列交换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

12

10

11

9

16

14

5

13

8

6

7

15

4

2

3

1

                  

                                                                          

 

 



提示:(答案见下期博客)

1.      思考每一种实际场景下唯一可以渡河的物品,以此来解答该谜题

2.      想象存在一个坏心肠的对手,让你在得到所需之前不得不挑出最多数目的手套。注意,手套不是袜子,有左右之分

3.      切出的三角形不需要是相同尺寸的

4.      先解决只有一个士兵摆渡的情况

5.      答案是‘不能’,思考其原因