当前位置: 首页 > 图灵资讯 > 技术篇> 2024.2.4每日一题

2024.2.4每日一题

来源:图灵教育
时间:2024-02-04 13:51:34

LeetCodeNim 游戏

292. Nim 游戏 - 力扣(LeetCode)

题目描述

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

  • 桌子上有一堆石头。
  • 你轮流做自己的回合, 你作为先手 。
  • 每一轮,轮到的人都会把它取下来 1 - 3 块石头。
  • 拿下最后一块石头的人是赢家。

假设你的每一步都是最好的解决方案。请写一个函数来判断你是否可以在给定的石头数量为 n 赢得游戏。如果你能赢,回去 true;否则,返回 false

示例 1:

输入:n = 4输出:false 说明:以下是可能的结果:1. 移除一块石头。你的朋友移走了三块石头,包括最后一块。你的朋友赢了。2. 移除两块石头。你的朋友移走了两块石头,包括最后一块。你的朋友赢了。3.你移走了三块石头。你的朋友移走了最后一块石头。你的朋友赢了。在所有的结果中,你的朋友都是赢家。

示例 2:

输入:n = 1输出:true

示例 3:

输入:n = 2输出:true

提示:

  • 1 <= n <= 231 - 1
思路

巴什博弈

只有一堆n个物品,两个人轮流从这堆物品中取出物品, 规定每次至少取一个,最多取m个。最后,取光者获胜。 只要 n 不能整除 m+1 ,那一定是先手取胜,否则后手取胜

代码C++
class Solution {public:    bool canWinNim(int n) {        return n % 4 != 0;    }};
Java
class Solution {    public boolean canWinNim(int n) {        return n % 4 != 0;    }}

image-20240204085907320

image-20240204085915258