算法----Nim 游戏

news2024/9/23 15:22:52

题目

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

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

示例 1:

输入:n = 4
输出:false
解释:以下是可能的结果:

  1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。
  2. 移除2个石子。你的朋友移走2块石头,包括最后一块。你的朋友赢了。
    3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。
    在所有结果中,你的朋友是赢家。
    示例 2:

输入:n = 1
输出:true
示例 3:

输入:n = 2
输出:true

提示:

1 <= n <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/nim-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解决思路

在这里插入图片描述

解决方法

我的做了三天的错误的做法:

    fun canWinNim(n: Int): Boolean {
        //  dfs
        //传递下去 当前是否是自己
        //
        return dfs(n, true)

    }

    fun dfs(n: Int, mySelf: Boolean): Boolean {
        if (mySelf && n <= 3) {
            return true
        }
        for (i in 1..3) {
            if(n - i<= 3 && mySelf){
                return false
            }
            if (dfs(n - i, !mySelf)){
                return true
            }
        }
        return false
    }

正确答案:

    fun canWinNim(n: Int): Boolean {
        return n % 4 != 0
    }

总结

1.数学能力强 聪明的人才能懂得去思考规律

2.少部分人发现定理,能懂的能知道的就赢了50%的人
所以。对于一般人来说 去学习就可以甩开周边人
但是对于天才 不行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 Python 实现【字符串重新排序】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 给定一个字串s&#xff0c;s包含以空格分隔的若干个单词&#xff0c;请对s进行如下处理后输出&#xff1a; 1、单词内部调整 对每个单词字母重新按字典序…

数据库之表的创建及数据类型

目录 创建表 简单语法&#xff1a; 固定格式&#xff1a; 案例 数据类型 文本类型 文本型 字符串型 二进制文本 枚举型 集合型 数字类型 整数型 浮点型 Date类型 DATE()日期 DATETIME() 日期和时间的组合 TIMESTAMP() 时间戳 TIME() 时间 YEAR() 2 位或 4 位…

Vue组件库Element-常见组件-表格

对于Element组件的使用&#xff0c;最主要的就是明确自己想要达到的效果&#xff0c;从官网中将对应代码复制粘贴即可&#xff0c;最重要的是要读懂不同组件官网中提供的文档&#xff0c;以便实现自己想要的效果 常见组件-表格 Table&#xff1a;表格&#xff1a;用于展示多条…

AE脚本适应底栏边框文字标题动画 Box It v1.0使用教程

这个AE脚本Box It主要是用于快速创建复杂的动态文本框,非常适合下第三标题、标签、聊天气泡、多个文本框等。 它的主要特点有: 1. 简单易用,无需键入任何代码,通过简单的拖放和调整参数即可创建动态文本框 2. 包含多种预设选项,如简单、标准、粗体、标签、聊天气泡等,可以直接使…

多语言跨境电商系统开发,支持一键铺货,商品采集

随着全球贸易的不断发展&#xff0c;跨境电商成为了一个日趋热门的领域。作为一种全新的商业模式&#xff0c;跨境电商为消费者提供了更加便捷、高效、多样化的购物体验。然而&#xff0c;要实现跨境电商的顺利发展&#xff0c;必须依靠先进的技术手段。 跨境电商系统是实现跨…

Stable Diffusion WebUI 集成 LoRA模型,给自己做一张壁纸 Ubuntu22.04 rtx2060 6G

LoRA概念 LoRA的全称是LoRA: Low-Rank Adaptation of Large Language Models&#xff0c;可以理解为stable diffusion&#xff08;SD)模型的一种插件&#xff0c;和hyper-network&#xff0c;controlNet一样&#xff0c;都是在不修改SD模型的前提下&#xff0c;利用少量数据训…

java web介绍

Web Java 技术栈 B/S 架构&#xff1a;Browser/Server,浏览器/服务器架构模式&#xff0c;它的特点是&#xff0c;客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器&#xff0c;获取 Wb 资源&#xff0c;服务器把 Wb 资源发送给…

如何做好数仓 BI 项目的规划与建设?

BI项目规划和实施方案是保障BI项目顺利落地的首要环节。好的项目规划能有效提升开发人效&#xff0c;缩短项目周期&#xff0c;实现项目预期目标。 构建运营数据的可视化是为企业运营管控提供有效的支撑&#xff0c;成为企业在大数据时代智慧运营的必然路径。 在实际BI项目的…

古典密码之一的Playfair密码的实现

目录 一.古典密码 二.Playfair密码的介绍 三.Playfair密码的实现 1.密钥转大写和密钥去重 2.输入密钥并打印密钥表 2.输入明文并加密为密文 3.输入密文并解密为明文 四.全部代码 一.古典密码 最早的加密方法可以追溯到公元前4000年左右的古代文明时期。埃及人、古希腊…

python解析考试题库数据

应单位要求需要参加某个考试&#xff0c;但考试需要从手机端登陆学习&#xff0c;1000多道题需要挨个刷一遍太过于麻烦&#xff0c;萌生了把题目和答案全部扒下来的想法&#xff0c;再用python做数据的清洗和梳理&#xff0c;最后整合出来所有的考试题库信息。 首先打开浏览器…

Socks5代理是什么?有哪些优势?

在线隐私和⽹络领域&#xff0c;Socks5代理已经成为⼀种受欢迎且强⼤的⼯具。但是Socks5是什么呢&#xff1f;使⽤Socks代理有什么优势&#xff1f;在本⽂中&#xff0c;Oxylabs和你一起探讨这些问题&#xff0c;揭⽰Socks5代理的世界。 深⼊了解Socks5代理 socks&#xff08…

计算机网络 day3 广播风暴 - VLAN - Trunk

目录 广播风暴&#xff1a; 1.什么是广播风暴&#xff1f; 2.危害&#xff1a; 3.防范 STP生成树协议&#xff1a;(72条消息) 生成树协议 — STP_生成树协议步骤_一下子就醒了的博客-CSDN博客 VLAN&#xff1a; VLAN是什么&#xff1f; VLAN起到的作用&#xff1a; 广…

软件测试常见基础知识面试题

一、测试基础理论 1.1 什么是软件测试&#xff1f; 为了发现程序中的错误而执行程序的过程 1.2 软件测试流程 1&#xff09;需求调查 2&#xff09;制定初步的项目计划 3&#xff09;测试准备 4&#xff09;测试设计 5&#xff09;测试实施 6&#xff09;测试评估 1.3 软件…

华为OD机试真题 Python 实现【字符串解密】【2023 B卷 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 给定两个字符串string1和string2。 string1是一个被加扰的字符串。string1由小写英文字母&#xff08;‘a’-‘z’&#xff09;和数字字符&#xf…

【SCI征稿】计算机算法、通信、人工智能、网络、物联网、机器学习等领域,13本期刊影响因子上涨,这几本期刊录用快

2023年JCR发布后&#xff0c;计算机领域SCI期刊有13本影响因子上涨&#xff0c;审稿周期短&#xff0c;进展顺利&#xff1a; 1️⃣IF&#xff1a;6.0-7.0↑&#xff0c;JCR2区&#xff0c;中科院3区&#xff0c;SCI&EI 双检&#xff0c;CCF-C类 征稿领域&#xff1a;概率…

喜讯 | ShowMeBug CEO 李亚飞获评“稀土开发者”年度技术引领人物

近日&#xff0c;由稀土开发者大会举办的「掘金技术引力榜」评选活动揭晓&#xff0c;李亚飞从众多优秀的技术开发者中脱颖而出&#xff0c;获评年度技术引领人物。 稀土开发者大会年度技术引领人物获奖榜单 稀土开发者大会是由稀土掘金技术社区主办&#xff0c;集国际化前瞻…

c# opencv 找到图像的轮廓,并绘制轮廓

Mat colorMat new Mat();Mat outMat new Mat();Mat resultMat new Mat();Mat src Cv2.ImRead("I:\\mask.jpg");//转成灰度图Cv2.CvtColor(src, colorMat, ColorConversionCodes.RGB2GRAY);//对灰度图像进行阈值操作得到二值图像Cv2.Threshold(colorMat, outMat, 0…

【Python编程系列】3、初识Python代码:输入输出

1、输出 在PyCharm上新建项目和python文件后,编写一行代码,输出:"Hello World"这句话。代码为: print("Hello World")PyCharm上运行代码有两种方式,如下图1和2。代码运行结果在下方显示: print函数打印字符串时加单引号或双引号,不能混用。 单引…

大厂都在做的jmeter接口自动化测试登峰造极的JMETER实现接口自动化测试

目录 一、JMETER的环境搭建 二、JMETER的汉化 三、JMETER的接口请求 四、JMETER的参数化 五、JMETER的JSON传参 六、JMETER的断言添加 一、JMETER的环境搭建 二、JMETER的汉化 临时汉化方法&#xff1a;打开jmeter&#xff0c;options-->choose language-->选择语言…

simulink 常用子系统 核心是函数封装simulink function

目录 Enabled Subsystem Triggered Subsystem Function-call Subsystem Simulink Function Enabled Subsystem Triggered Subsystem Function-call Subsystem Simulink Function 类似c函数的封装 数组形参