LeetCode Nim游戏 题解

题述:

你和你的朋友,两个人一起玩 Nim 游戏:

桌子上有一堆石头。
你们轮流进行自己的回合, 你作为先手 。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 

思路:这是一个找规律题,实际上只要石头数是4的倍数那么第一个拿石头的人肯定会输,假如石头数不是4的倍数,那么第一个拿的人将他变成4的倍数,那么第一个拿的人肯定会赢。可以以 2,3,4,7,8,13,15等为例子按照我说的拿法验证一下。

题解

bool canWinNim(int n){
if(n%4==0)
return false;
else return true;
}

你可能感兴趣的:(游戏,算法,leetcode)