LeetCode 5024 除数博弈 --(简单博弈论)

Posted 你还未发现

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 5024 除数博弈 --(简单博弈论)相关的知识,希望对你有一定的参考价值。

今天在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 红眼岛岛民自杀事件
海盗分金什么的

以上是关于LeetCode 5024 除数博弈 --(简单博弈论)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

Leetcode初学——动态规划算法“除数博弈”(假 )

leetcode 1025. 除数博弈(Divisor Game)

leetcode刷题67 .除数博弈——Java版

1025. 除数博弈博弈论

除数博弈