leetcode 292.Nim游戏

思路:数学

这有一点博弈论的味道,但是我们依然可以用数学的角度去思考。

我们的入手点在这里:

我们是先手的前提下,一共有4个石头,但是每个人只能一次拿其中的1-3个。在一共有4个石头的情况下,我们无论拿走几个,总会剩下对手可以拿到的范围的石头个数,我们必输;那么,反其道而行之,我们不让它的总数是4个就行了。

以此类推,当是8个,12个等等4的倍数的时候,我们可以按照4个4个的阶段进行解读,因为我们总是选择最优的解法,我们想赢,就必须把剩余的石子个数控制在4的倍数之外。

所以,我们只需要把三种可能的结果剩余石头算出来,然后判断它们其中有没有不是4的倍数的石子个数,有一个就证明我们可以采取其中的几个策略来实施。

class Solution {public boolean canWinNim(int n) {if(n<=3)return true;else{int []arr=new int[3];arr[0]=n-1;arr[1]=n-2;arr[2]=n-3;if(arr[0]%4==0||arr[1]%4==0||arr[2]%4==0)return true;elsereturn false;}}
}

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

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

相关文章

selenium自动化测试之Junit

1. 常用的注解 将junit的索引添加到pom文件&#xff1a; <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId&…

Fortran 学习笔记001

1.输入输出及声明 1.1 Fortran程序的主要结构 程序通常以program描述来开头&#xff0c;后接定义的程序名&#xff08;可以省略&#xff0c;但建议使用并取有意义的名称&#xff0c;便于阅读&#xff09;&#xff0c;最后以end描述结尾&#xff0c;可以有三种方式&#xff1a…

基于Java实现(APP)智能停车场管理系统

移动应用开发系统设计说明书&#xff08;智能停车场管理系统&#xff09; 服务集成流程详细设计 实现功能 序号功能点1新增用户2注册用户3修改场地信息4列出场地信息5新增认证车辆6列出认证车辆7删除认证车辆8车辆进入信息录入9停车记录列表展示10出停车场信息录入 参数说明…

Pear Admin Flask Master开启步骤

由于我学的是数控技术&#xff0c;对编程是从小白自学的&#xff0c;在运行pearflask时一直没搞懂初始化数据库这一步是在哪里执行的&#xff0c;网上查了很多资料都没写&#xff0c;找了一天半的资料后终于查到了。 使用系统&#xff1a;Windows 10 Python版本&#xff1a;Py…

架构师之路-学渣到学霸历程-09

文件打包压缩命令 继续敲命令联系手感得了&#xff0c;坚持敲命令&#xff0c;使用命令行&#xff0c;让我更cool&#xff1b; 这些基础的命令要掌握&#xff0c;其实主要的就是要练手感了&#xff1b;敲吧&#xff0c;努力&#xff1b;~&#xff01; 1.gzip命令&#xff1a;…

YOLOv8实战PCB电路板缺陷检测【数据集+YOLOv8模型+源码+PyQt5界面】

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对PCB电路板缺陷数据集进行训练和优化&#xff0c;该数据集包含丰富的PCB电路板缺…

【司南大模型评测工具 API评测商业大模型】

1、司南大模型评测工具&#xff08;如果是pip安装&#xff0c;也要git clone 代码文件夹&#xff09; conda create --name opencompass python3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y conda activate opencompass git clone https://github.com/open…

Hessian 序列化

Hessian 序列化 Hessian 序列化是一种轻量级的二进制 RPC 序列化方式。 一、定义与特点 定义&#xff1a; Hessian 是一种用于在不同编程语言之间进行高效对象序列化和远程方法调用的二进制协议。它主要用于在分布式系统中进行数据传输和远程过程调用&#xff08;RPC&#xff…

Oracle数据库的乐观锁和悲观锁

Oracle数据库的悲观锁和乐观锁是两种数据锁定机制。 悲观锁&#xff08;Pessimistic Locking&#xff09;在数据开始读取的时候就把数据锁定住&#xff0c;其它想插入的数据要等待直到锁的释放。这种锁定数据的方式带来的是性能的降低&#xff0c;因为在多用户并发访问的时候&…

Go语言实现长连接并发框架 - 任务管理器

文章目录 前言接口结构体接口实现项目地址最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;我们上篇博客实现了路由分组的功能&#xff0c;接下来这篇博客我们将要实现任务管理模块 接口 trait/task_mgr.go type TaskMgr interface {RouterGroupStart()StartWorker(tas…

【计网】从零开始学习http协议 ---深入理解cookie和session

我的天空里没有太阳&#xff0c; 总是黑夜&#xff0c; 但并不暗&#xff0c; 因为有东西代替了太阳。 --- 东野圭吾 --- 从零开始学习http协议 1 理解cookie1.1 什么是cookie1.2 验证cookie1.3 cookie的属性 2 理解session2.1 什么是session2.2 验证session 1 理解cooki…

刷题 链表

面试经典150题 - 链表 141. 环形链表 class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head, *fast head;while (fast ! nullptr && fast->next ! nullptr) {slow slow->next;fast fast->next->next;if (slow fast) {return…

【Linux复习】指令

文章目录 1.>2. cat3.系统命令bash和shell和kernel权限只被认证一次粘滞位引入前提知识场景解释为什么普通用户&#xff08;无w权限&#xff09;可以删除文件&#xff1f;为什么普通用户通过sudo设置文件权限为000后仍能删除文件&#xff1f; 结论 粘滞位是干什么的&#xf…

苍穹外卖P19--异常处理

以上传数据库数据重复为例&#xff0c;进行异常处理。 接口文档报错&#xff1a; 重新启动&#xff1a;

使用 Wireshark 抓取类似的 HTTP 请求包

要使用 Wireshark 抓取类似的 HTTP 请求包&#xff0c;可以按照以下步骤进行操作&#xff1a; 安装并启动 Wireshark 如果你还没有安装 Wireshark&#xff0c;可以从Wireshark 官方网站下载并安装它。 安装完成后&#xff0c;启动 Wireshark。选择网络接口 在 Wireshark 主界面…

Linux中perf的使用

perf 是 Linux 系统中的一个强大的性能分析工具&#xff0c;广泛用于内核和用户态程序的性能分析。它可以帮助开发者和系统管理员深入了解程序的 CPU 使用情况、函数调用频率、缓存命中率、硬件事件等&#xff0c;进而优化程序的性能。 下面我将详细介绍如何在 Linux 系统中使…

单例模式和读者写者问题

文章目录 10. 线程安全的单例模式10.1 什么是设计模式10.2 什么是单例模式10.3 单例模式的特点10.4 饿汉方式和懒汉方式10.5 单例模式的线程池 11. STL和智能指针的线程安全 问题11.1 STL中的容器是否是线程安全的?11.2 智能指针是否是线程安全的? 12. 其他常见的各种锁13. 读…

009——二叉树

目录 二叉树的五种基本形态&#xff1a; 1.二叉树可以是空树 2.只有一个根节点的树 3.斜树&#xff1a;只有左子树或右子树的树 4.左右孩子都有的树 二叉树的性质&#xff1a; 1.假设根节点是第一层&#xff0c;在二叉树的第i层上最多有2^(n-1)个结点 2.深度为k的二叉树…

WebGoat JAVA反序列化漏洞源码分析

目录 InsecureDeserializationTask.java 代码分析 反序列化漏洞知识补充 VulnerableTaskHolder类分析 poc 编写 WebGoat 靶场地址&#xff1a;GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application 这里就不介绍怎么搭建了&#xff0c;可以参考其他…

Bash 脚本中解析 INI 文件

在 Bash 脚本中解析 INI 文件可能稍显复杂&#xff0c;因为 Bash 本身并未内置专门用于处理此类配置文件的工具。然而&#xff0c;我们可以通过一些文本处理命令&#xff08;例如 grep、sed、awk&#xff09;或借助外部工具&#xff08;如 python 脚本或 inih 库&#xff09;来…