leetcode292. Nim游戏——博弈论

292. Nim 游戏

Difficulty: 简单

你和你的朋友,两个人一起玩 :桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。

你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。

示例:

输入: 4
输出: false 
解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;
     因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。

Solution

分析:当先手面临石子数为4的倍数时,会发生上边解释中的情况,后手可以四个为一组,控制拿走的石子数,后手必胜;而石子数不是4的倍数时,先手可以先拿走1/2/3个石子从而将上述情况抛给后手,局势正好反转,先手必胜。

主体就一句(水)⬇

return False if n%4==0 else True

猜你喜欢

转载自blog.csdn.net/qq_45268474/article/details/108453000