LeetCode 292. Nim Game

本文探讨了Nim游戏中的胜负策略,通过分析得出先手玩家在特定条件下必胜的结论。文章提供了简洁的代码实现,并解释了其背后的数学原理。

<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);">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.</span>

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.

For example, 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.

分析:此题为简单的数字类题目,可以通过举例归纳出数字间的规律

题目是先手必赢的情况:每人拿1~3块石头,那么

如果石头数量是1~3,先手必赢;

如果是4,先手必输;

如果是5~7,可让后手面对数量为4的局面,先手必赢;

如果是8,先手会面临数量为4的局面,先手必输;

……

依次类推,当某一方 面对石头数量为4的倍数的情况,必输,要满足题意,先手不能是4的倍数,必赢。

代码如下:

public class Solution {
    public boolean canWinNim(int n) {
        if (n % 4 == 0){
            return false;
        }else{
            return true;
        }
    }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值