292-e-Nim Game

本文介绍了一个简单的游戏策略问题,玩家与对手轮流从总数中取1、2或3个单位,目标是拿到最后一个单位以获胜。通过分析发现,利用模运算可以轻松制定必胜策略,并附带提供了简洁的代码实现。

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

给定一个数,玩家和对手依次每次只能选择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了吧。虽然代码简单,但要从题目中抽取逻辑还是要有点小聪明的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值