你正在和朋友玩下面的Nim游戏:桌子上有一堆石头,每一次你们轮流取1至3颗石头。最后一个取走石头的人就是赢家。第一轮由你先取。你们俩都很聪明并且掌握玩游戏的最佳策略。编写函数,给定石头的个数,判断你是否可以赢得游戏。
例如,如果堆中有4颗石头,那么你一定不会赢得游戏:无论你第一轮取走1,2,还是3颗石头,下一轮你的朋友都可以取走余下的所有石头。
解题思路:
Nim游戏的解题关键是寻找“必胜态”。
根据题设条件:
......
以此类推,可以得出结论:
class Solution {
public:
bool canWinNim(int n) {
return n % 4 !=0;
}
};

本文介绍了一种Nim游戏的胜负判断策略。通过对游戏规则的分析,总结出当石头总数n模4不等于0时,先手玩家可以赢得游戏;反之则会输掉游戏。文章还提供了一个简洁的C++实现。
327

被折叠的 条评论
为什么被折叠?



