模型:Tom 和 Bob 玩取石子游戏,有(n)个石子,每次每人能取(1)个或(2)个,两人轮流取,Tom 先手,将石子取完的那个人输。求两人在最优决策下,Tom 是否能赢。
设(f(n))表示在剩余(n)个式子下先手能不能赢,假设(f(n) = 0)代表先手不能赢,(f(n) = 1)代表先手能赢。
初始化:(f(1) = 0,f(2) = 1)
递推式:
[ ext{for} space n ge 3:\
f(n) =
egin{cases}
1 & f(n - 1) = 0 space ext{or} space f(n - 2) = 0\
0 & ext{otherwise}
end{cases}
]
递推(mathcal{O}(n)),然后发现如果(n - 1)是(3)的倍数,(f(n) = 0),相当于将(f(n) o !f(3))。