给定一个数,玩家和对手依次每次只能选择1,2或3,玩家先手,谁拿到最后那个数就是胜者。写一个逻辑判断给出的数是否能让你必胜。
我去这个小game我在游戏中真遇到过,还记得当时的数是21,我老是输以为有很难的规律。现在竟然leet有个题目,感觉有点像动态规划的即视感,但仔细一考虑这不是0和1两种选择能搞定的,于是从4,5,6,7模拟中找规律,发现只要每次将自己的数和对手拿的数凑成4,那么最后一个数必定自己拿到。那么也就是说只要判断n是否模4就行了。于是几句代码搞定,一提交就ac了,想想还是有点小高兴,毕竟完全是自己想出的解法。虽然说难度不高,但以前的话估计一看不会就去网搜了吧。
bool canWinNim(int n) {
bool result = false;
if (n % 4)
result = true;
return result;
}
估计此题也是leet上代码最简单ac了吧。虽然代码简单,但要从题目中抽取逻辑还是要有点小聪明的。