Nim游戏
题目:你和你的朋友,两个人一起玩Nim游戏:
- 桌子上有一堆石头。
- 你们轮流进行自己的回合,你作为先手。
- 每一个回合,轮到的人拿掉1-3块石头。
- 拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为n的情况下赢得游戏。如果可以赢,返回True;否则,返回False。
示例1:
输入:n=4
输出:false
解释:如果堆中有4块石头,那么你永远不会赢得比赛;因为无论你拿走1块、2块还是3块石头,最后一块石头总是会被你的朋友拿走。
示例2:
输入:n = 1
输出:true
示例3:
输入:n = 2
输出:true
这道题其实是一道基于博弈论的最基础的题目,看似复杂,其实很简单,通过不断找规律就能发现:
n=1 True
n=2 True
n=3 True
n=4 False
n=5 True
n=6 True
n=7 True
n=8 False
n=9 True
…
n=4n False
…
当n为4的倍数时,先手一定不能获胜,所以输出false。
那么此题使用python求解即为: