当前位置: 首页 > news >正文

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.lryc.cn/news/460774.html

相关文章:

  • 《最优化方法》
  • fork中的死锁问题
  • Java面试题———SpringBoot篇
  • 模块化沙箱:构建零信任架构的关键技术
  • 10.14学习日志
  • “我们为什么缺少科学精神”演讲内容拆解
  • openpyxl 3.0.7 中文教程
  • idea开发工具使用
  • Android map 获取值
  • Leetcode.13 罗马数字转整数
  • 骨架提取(持续更新)
  • B3622 枚举子集
  • git submodule add用法
  • 计算机毕业设计 基于Python的汽车销售管理系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】
  • 主流的安全测试工具知识点
  • 如何接入实时期货行情数据 - 2024最新教程
  • 通义灵码:AI 编码的强大助力
  • docker 容器启动详解
  • 【spring ai】java 实现RAG检索增强,超快速入门
  • 【Java SE 题库】递归的魅力之--> 汉诺塔问题
  • 《为什么要在三层交换机 VLAN 上配置 IP 地址?》
  • Git的基本使用入门
  • Elasticsearch 入门
  • WebSocket 集成 Spring Boot 的实战指南
  • 无人机集群路径规划:四种优化算法(BKA、CO、PSO、PIO)求解无人机集群路径规划,提供MATLAB代码
  • 第二届 龙信杯 电子数据取证竞赛部分Writeup
  • 偷啥的都有!
  • 【中文注释】planning_scene_tutorial.cpp
  • 【Vue3】 h()函数的用法
  • Flask如何实现前后端分离项目