LeetCode 5024 除数博弈 --(简单博弈论)
2024-09-01 10:32:02
今天在LeetCode的看到一到题目
这道题目有点坑,没有思路的话容易钻牛角。
刚刚开始时,我想的是直接用while循环来模拟计算,后来觉得这么好麻烦,也有复制的逻辑在里面。后面我推导了一下
以下是我的推导过程,爱丽丝简称 A 鲍勃 简称B
当num=2时,A=1-->num=num-1=1,A赢
当num=3时,A只能出1,-->num=num-1=2,此时B正好处于num=2的情况,所以B可以用之前A的策略,B赢
当num=4时,A可以出1 或 2,但是为了赢,A必须让B处于输的情况,也就是num=3的情况。所以A出1,-->num=num-1=3
当num=5时,A可以出1,-->num=num-1=4,此时B正好处于num=4的情况,B赢
当num=6时,A可以出1,2,3,但是A为了赢,必须让B处于必输的情况下,A出1-->num=num-1,当B出时,num=5,B输。
以此类推,
我们可以得出结论
当N%2==0时,先出的赢
当N%2!=0时,后出的赢
所以这道题目的解为
public boolean divisorGame(int N) {
if(N%2==0){
return true;
}else{
return false;
}
}
就是这么简单。
我之前还做过另一个类似的题目。
题目好像是:
两个人,轮流报数 1或2 ,然后不停往上加,谁加到30谁就赢。
其实用的是同样的思想。
这种思想和博弈论一样,都是在最理性的情况下进行分析的,
bilibili有好多类似的视频 av7852097 红眼岛岛民自杀事件
海盗分金什么的
最新文章
- 关于一道数据库例题的解析。为什么σ age>;22 (πS_ID,SCORE (SC) ) 选项是错的?
- 编译Ansj之Solr插件
- js实现继承
- java 使用cookie记录用户上一次访问的时间 记住 用户的 登录名
- OC正则表达式的简单使用
- Redis桌面管理工具 RedisDesktopManager
- Guava文档翻译之ListenableFuture
- php文件锁解决少量并发问题
- [XML] C#ResourceManagerWrapper帮助类 (转载)
- Excel进行项目规划的好处
- ios简单更改系统TabBar的高度
- HTML 标签小细节
- Java框架spring 学习笔记(十四):注解aop操作
- Android中getDrawable和getColor过时的替代方法
- C#对接----韵达开发平台--取电子面单
- JavaScript中的Generator函数
- Velocity Obstacle
- JavaScript快速入门-ECMAScript函数
- bellman-ford算法(判断有没有负环)
- window.parent 与 Window.top
热门文章
- 算法与数据结构基础 - 深度优先搜索(DFS)
- Spring 梳理 - JavaConfig实战(spring MVC)-原创
- Spring Environment的加载
- java+maven+jenkins+svn构建
- idea 环境变量设置编码
- springboot 整合ehcache缓存
- 基 B/S 平台的机房监控云平台-U位篇
- MongoDB 学习笔记之 Aggregation Pipeline
- SpringBoot-ElasticJob封装快速上手使用(分布式定时器)
- 微人事 star 数超 10k,如何打造一个 star 数超 10k 的开源项目