泸州网站建设公司,建筑公司网站的目标用户,济阳做网站多少钱,自己做网站 微信#x1f680; 算法题 #x1f680; #x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 #x1f340; #x1f332; 越难的东西,越要努力坚持#xff0c;因为它具有很高的价值#xff0c;算法就是这样✨ #x1f332; 作者简介#xff1a;硕风和炜#xff0c;… 算法题 算法刷题专栏 | 面试必备算法 | 面试高频算法 越难的东西,越要努力坚持因为它具有很高的价值算法就是这样✨ 作者简介硕风和炜CSDN-Java领域优质创作者保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享 恭喜你发现一枚宝藏博主,赶快收入囊中吧 人生如棋我愿为卒行动虽慢可谁曾见我后退一步 算法题 目录 题目链接⛲ 题目描述 求解思路实现代码运行结果⚡ 博弈问题 求解思路 实现代码 运行结果 共勉 题目链接
292. Nim 游戏
⛲ 题目描述
你和你的朋友两个人一起玩 Nim 游戏
桌子上有一堆石头。你们轮流进行自己的回合 你作为先手 。每一回合轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢返回 true否则返回 false 。
示例 1
输入n 4 输出false 解释以下是可能的结果:
移除1颗石头。你的朋友移走了3块石头包括最后一块。你的朋友赢了。移除2个石子。你的朋友移走2块石头包括最后一块。你的朋友赢了。 3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。 在所有结果中你的朋友是赢家。
示例 2
输入n 1 输出true
示例 3
输入n 2 输出true
提示
1 n 231 - 1 求解思路实现代码运行结果 ⚡ 博弈问题 求解思路
类似于这样博弈类型的题目我们可以将自己作为先手看能否找到一种最佳的方案赢得最终的结果。我们可以简单的模拟一下如果石头的数量是1、2、3,那么先手获胜如果石头数量为4的话无论怎么选择先手都会输如果石头的数量是5、6、7那么先手依旧是可以获胜如果石头的数量是8那么先手还是输的。。。。。。可以继续模拟下去。我们猜测结论先手必赢的策略石头的数量不是4的倍数先手必输的策略石头的数量是4的倍数。有了基本的思路接下来我们就来通过代码来实现一下。 实现代码
class Solution {public boolean canWinNim(int n) {return n % 4 ! 0;}
} 运行结果 共勉
最后我想和大家分享一句一直激励我的座右铭希望可以与大家共勉