部(xu)分(duo)材料摘自百度百科
定义
Nim游戏:通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。
P局面与N局面:P代表Previous,N代表Next。所谓P局面,简单点讲即在这个局面的人必败,而N局面相反。
性质
这里写得简单一点,应该不难懂
①:从当前局面出发,能够转移成为P局面的就是N局面。
②:从当前局面出发,不论如何取都是N局面的就是P局面。
③:不能移动的局面就是P局面(废话)
判断方法
判断一个局面是P/N的方法有很多。一般能想到的是递归。对于一个局面,递归处理其子局面。如果有至少一个是P局面,那么当前局面就是N局面。否则就是P局面。
但是这些递归会有很多重复计算,于是我们就可以考虑记忆化搜索,把每次的结果存起来,就可以大大减小时间复杂度。
Nim游戏结论
又但是,不论怎么优化,时间复杂度总是不会优于 O(