Nim游戏、3的幂、4的幂

博弈论---Nim游戏(公平组合游戏,概念,证明异或为0就是必败态,示例) 游戏使用一堆物品,例如棋子、石头或者硬币,这些物品被分成几堆,每堆可以有任意数量的物品。Nim游戏的关键在于掌握取物品的策略,因为有正确的方法可以确保你获胜,无论对手怎么移动。这个策略涉及到让每一堆物品的数量保持在特定的模式,这样你就可以控制游戏的走向,迫使对手进入必败局面。NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 阅读详情

🍅 Java学习路线:Java学习路线

🍅 简介:Java领域优质创作者🏆、优快云哪吒公众号作者✌ 、Java架构师奋斗者💪

🍅 百日刷题计划:第 12 / 100 天。

🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 

🍅 欢迎点赞 👍 收藏 ⭐留言 📝  

大连跨海大桥 


算法是进阶架构师的基础,基础不牢,地动山摇,2021-8-14起开始刷题,目标100天,300道LeetCode算法题,分享是学习的最好方式,加油,嗨起来。 

1、LeetCode 292.Nim游戏

题目

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

桌子上有一堆石头。
你们轮流进行自己的回合,你作为先手。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。

小编思路分析

只要能保证剩4个给对方,就稳赢了。

小编菜解

public boolean canWinNim(int n) {
    return (n % 4 != 0);
}

2、LeetCode 326.3的幂

题目

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

小编菜解

public static boolean isPowerOfThree(int n) {
    while (n%3 == 0){
        n/=3;
        if (n==1){
            return true;
        }
    }
    return false;
}

小编觉得这道题还是挺简单的,信心满满的提交了答案,结果提示:

 看到了吗,自信的提交了两次,尴尬!

 大佬指点江山

public boolean isPowerOfThree(int n) {
    if (n<1){
        return false;
    }
    
    while (n%3 == 0){
        n/=3;
    }
    return n==1;
}

冷眼一看,思想是一致的,但是,我在while中进行了无数次的n=1判断,而这次判断大佬只用了一次,学到了,学到了。 

3、LeetCode 342.4的幂

题目

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

小编菜解

public static boolean isPowerOfFour(int n) {
    if (n<1){
        return false;
    }
    while (n%4 == 0){
        n/=4;
    }
    return n==1;
}

3的做完了,4的岂不是一样?提交 -> 成功,果然如此,但是,事情往往没有想象中的那么简单。

思路及算法

大佬指点江山

public boolean isPowerOfFour(int n) {
    return n > 0 && (n & (n - 1)) == 0 && n % 3 == 1;
}

大佬就是大佬,这脑袋是怎么长的,哎。。。

推荐阅读

【100天算法入门 - 每日三题 - Day11】丢失的数字、移动零、单词规律

【100天算法入门 - 每日三题 - Day10】二叉树的所有路径、各位相加、丑数 

【100天算法入门 - 每日三题 - Day9】汇总区间、2的幂、有效的字母异位词

【100天算法入门 - 每日三题 - Day8】同构字符串、存在重复元素、翻转二叉树

【100天算法入门 - 每日三题 - Day7】验证回文串、只出现一次的数字、多数元素

【100天算法入门 - 每日三题 - Day6】对称二叉树、二叉树的最大深度、将有序数组转换为二叉搜索树

【100天算法入门 - 每日三题 - Day5】最后一个单词的长度、相同的树、买卖股票的最佳时机

...

【100天算法入门 - 每日三题 - Day3】回文数、罗马数字转数字、最大公共前缀

【100天算法入门 - 每日三题 - Day2】二分查找、第一个错误的版本、搜索插入位置

【100天算法入门 - 每日三题 - Day1】二叉树的中序遍历、两数之和、整数反转

博弈论——组合游戏(Bash和nim) 就是说nim游戏是一堆石子不能增加的游戏,要不断地从其中的一堆石子中取走一些石子,然后台阶nim游戏就是说,把奇数层的阶梯维护成一个nim游戏,根据nim游戏的规则,当奇数层的异或和不为0的时候,先手胜,因为如果后手将偶数层的石子移动到奇数层,先手可以将该奇数层被移过来的石子,又移到下一层偶数层,此时奇数层的状态不受影响,后手想改变状态的话,就要将奇数层的石子移到偶数层,那这时异或和由0变为正整数,先手始终能从奇数层上一部分石子,使得异或和又变成零。如果一开始奇数层的异或和为0的话,同理,但会是后手胜。 阅读详情

相关推荐

博弈论2:尼姆游戏(取物游戏)(Nim Game)

两个玩家,I & II,每轮交替行动有三堆筹码,筹码个数分别为x1,x2,x3(xi都是正整数)每轮游戏中,选取一个非空的筹码堆i从堆中取走>=1个筹码(拿走一个或更多个,最多把这一堆拿空)拿走最后一个筹码的人获胜。(拿完之后三堆都没有筹码了)

weixin_74447766的博客 4312

博弈论(Nim游戏)

题目要求:给你 n 堆石子,两个人轮流取石子,每次选择一堆,可以取出这一堆的任何数量的石子,直到某个人无法再取出任何石子,则另一个人就赢了。因此我们就可以创造先手的必胜态,则对于后手的来说一定是必输态。阶上去,直到最后台阶为0时,无法再移动,问能否先手必胜?,则可以证明,一个必胜态一定可以转换得到一个必输态。第一个人取第一堆,第二个人取第二堆,则第一个人必输。则通过上面的描述,一个必胜态一定可以转换为必输态。的位置,则最后就可以把一个必胜态转变为必输态。的情况,则就是甲先手赢的选择的情况。

ylh的博客 2393

力扣解题思路:脑筋急转弯系列

172. 阶乘后的零 思路:给定一个整数 n,返回 n! 结果尾数中零的数量。 我们知道,尾部的 0 由 2 * 5 得来,2 的数量明显多于 5 的数量,因为2永远先于5出现,因此只要统计有多少个 5 即可。 对于一个数 N,它所包含 5 的个数为:N/5 + N/5^2 + N/5^3 + …,其中 N/5 表示不大于 N 的数中 5 的倍数贡献一个 5,N/5^2 表示不大于 N 的数中 5^2 的倍数再贡献一个 5 …。 //首先题目的意思是末尾有几个0 // 比如6! = 【1* 2* 3* 4*

qq_39879315的博客 1102

台阶--Nim游戏(博弈论)

问题: 现在,有一个nn级台阶的楼梯,每级台阶上都有若干个石子,其中第ii级台阶上有aiai个石子(i≥1i≥1)。 两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。 已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。 问如果两人都采用最优策略,先手是否必胜。 输入格式 第一行包含整数nn。 第二行包含nn个整数,其中第ii个整数表示第ii级台阶上的石子数aiai。 输出格式 如果先手方必胜,则输出Yes。 ...

m0_51367574的博客 572

Nim游戏

题目描述:  你和你的朋友,两个人一起玩 Nim游戏: 桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛 因为无论你拿走 1 块、2 块 还...

menqiqi_的博客 2384

C语言实现Nim游戏

Nim概述 nim游戏详解(易懂) 再强调一遍结论: 对于一个Nim游戏的局面(a1,a2,…,an),它是P-position当且仅当a1^ a2^ … ^ an=0,其中“^”指抑或(xor)运算。 这便是整个程序的基础。 话不多说,直接上代码: 代码 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt;...

qq_44113419的博客 1968

Nim游戏、3的幂、4的幂,java面试知识点

链图片转存中…(img-2VLpYktF-1711712328048)][外链图片转存中…(img-naQVq0B7-1711712328049)][外链图片转存中…(img-owNaibY7-1711712328049)]

698

Nim 游戏 、⽯头游戏1、石头游戏2

Nim 游戏 、⽯头游戏1、石头游戏2 一:Nim 游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;...

wolfGuiDao的博客 1008

leepcode作业解析-5-21

25、Nim游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 ...

weixin_30813225的博客 165

CST STUDIO SUITE 2023安装

破解工具的Crack文件夹内有一个名为「CST Studio Suite 2022」的文件夹,这也是于CST的安装目录同名的文件夹,直接把它拷贝到CST Studio Suite 2022的同级路径下即可,比如你的CST安装路径为:D:\Program Files\CST Studio Suite 2022,则将Crack目录内的「CST Studio Suite 2022」文件夹复制到 D:\Program Files\ 这个级别的路径下即可。软件百度网盘链接放在文章末尾啦!先不着急启动CST或者激活。

m0_49516223的博客 4117

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)

本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。

ooo22的博客 265

[日常刷题]leetcode D27

文章目录292. Nim Game303. Range Sum Query - Immutable326. Power of Three342. Power of Four小结知识点 292. Nim Game You are playing the following Nim Game with your friend: There is a heap of stones on the tabl...

我在等那么一天的博客 381

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

java练习 day5

java练习

qq_56086076的博客 304

【Ubuntu】RK3576 Linux 6.10 Ubuntu 22.04 系统中 HUSB311 Type-C 转 DP 显示输出与 Device/OTG 模式切换配置详解

本文详细介绍了在Rockchip RK3576开发板(Linux Kernel 6.10+Ubuntu 22.04)上配置HUSB311 Type-C控制器的设备树实现方案。主要内容包括:1)硬件连接与模块组成;2)设备树完整配置,涵盖Type-C供电、USB OTG/Host模式、DP显示输出等关键功能;3)软件配置步骤与常见问题排查方法。该方案实现了Type-C接口的DisplayPort AltMode显示输出、USB Device/Host模式自动切换等功能,为嵌入式系统Type-C接口开发提供参考

qq_34478161的博客 808

ChangeMamba训练调试

此仓库的代码是在 Linux 系统下运行的。我们尚未测试是否能在其他操作系统下运行。 首先需要安装VMama仓库。以下安装顺序取自VMama仓库。克隆该版本库并导航至项目目录: 建议设置 conda 环境并通过 pip 安装依赖项。使用以下命令设置环境: 创建并激活新的 conda 环境 安装依赖项 检测和分割任务的依赖库(在 VMamba 中为可选项) 二、下载预训练权重 另外,请下载VMamba-Tiny, VMamba-Small, and VMamba-Base在ImageNet上的预训练权重并把它

hanfeng5268的博客 575

博弈论,NIM游戏,台阶型,集合型,SG函数,详解

博弈论,比较有趣的数学问题

EQUINOX1的博客 2097

数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 6(step by step)

第六章6-1~6-42习题详解,缺少6-39和6-40

weixin_62651190的博客 1465

acwing算法基础之数学知识--Nim游戏和集合Nim游戏

Nim游戏和集合Nim游戏

YMWM_的博客 1287

矩阵奇异值分解算法(SVD)的导数 / 灵敏度分析

设矩阵X∈Rm×nX∈Rm×nXUΣV⊤XUΣV⊤U∈Rm×mU∈Rm×m为左奇异向量矩阵;V∈Rn×nV∈Rn×n为右奇异向量矩阵;Σdiag⁡σ1σ2σrΣdiagσ1​σ2​σr​为奇异值对角阵(rrank⁡XrrankX我们关心:当XXX发生微小扰动dXdX时,UΣVUΣV如何变化?dXdUΣV⊤dX。

qq_36812406的博客 1750

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LC-3 汇编语言 Nim游戏

计算机系统1

笔记 1978

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

P2197 【模板】Nim 游戏 题解

P2197 【模板】Nim 游戏 题解

yaosichengalpha的博客 853

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

组合数学——Nim取子游戏

Nim取子游戏是由两个人面对若干堆硬币(或石子)进行的游戏。设有k>=1堆硬币,各堆分别含有N1,N2,……NK枚硬币。游戏的目的就是选择最后剩下的硬币。游戏法则如下:1.两个游戏人交替进行游戏(游戏人I和游戏人II);2.当轮到每个游戏人取子时,选择这些堆中的一堆,并从所选的堆中取走至少一枚硬币(游戏人可以取走他所选堆中的全部硬币);3.当所有的堆都变成空堆时,最后取子的游戏人即为胜

王来安的专栏 8710
上一篇: 算法面试题汇总
下一篇: 两个数组的交集、有效的完全平方数、字符串中的第一个唯一字符
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值