LeetCode #292 - Nim Game

本文介绍了一种Nim游戏的最优策略,确保玩家在特定条件下获胜。游戏中,两名玩家轮流从一堆石头中移除1至3颗,移走最后一颗者获胜。文章提供了一个简单函数判断初始石头数量下是否能赢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.

Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.

Example:

Input: 4

Output: false 
Explanation: If there are 4 stones in the heap, then you will never win the game;
             No matter 1, 2, or 3 stones you remove, the last stone will always be 
             removed by your friend.

Nim游戏,每次可以从一堆石头中取出1~3颗石头,如果双方都采用最优策略,能否保证一定胜利。其实最优策略就是如果对手取n颗石头,那么自己就取4-n颗石头,这样由于自己先取,只要石头总数不是4的倍数,那么就一定能取到最后一颗石头。但是如果石头总数是4的倍数,同时对手也采取最优策略,那肯定就取不到最后一颗石头。

class Solution {
public:
    bool canWinNim(int n) {
        return n%4;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值