2009年4月24日星期五

How To Solve It,2

Problem:100根火柴,两个人轮流取,每个人每次只能取1~7根,谁拿到最后一根火柴谁赢;问有必胜策略吗,有的话是先手还是后手必胜?
问题很简单,也就是我先前提到的逆向思维的拓展问题之一。
采取递归的思维方式,请先回忆一下汉诺塔问题。
拿到最后一根火柴为胜者,即在对手取最后一轮时,火柴最多只能剩7根,多则溢少则输。
换句话说,必胜策略:胜者取完倒数第二轮后,剩余火柴为8根。此时无论输者取几根都是输。根据100-8=92,可知,胜者必须取到第92根。
呵呵,到这里了,同样应用同种原理,胜者必须取到92-8=84,第84根。
如此,tsutsukeru
92,84,76,……,12,4.
由于4<7,故先手必胜

还有个可用类似思维方式的题,来自《编程之美》
两堆橘子,各为m和n个,两人轮流拿,拿的时候你只能选择某一堆在里面拿(即不能跨堆拿),你可以拿1~这堆里面所有剩下的个橘子,谁拿到最后一个橘子谁赢;问题同上。

没有评论:

发表评论