LeetCode 2029 石子游戏IX[博弈论 模拟] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 2029 石子游戏IX[博弈论 模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
博弈论的题目往往是思考复杂,代码简单,这道题就是一个典型。首先,由于考量的是取得的数是否是3的倍数,所以我们对狮子的价值根据与3取余的值进行统计,总共有0,1,2三种情况,保证取得数不是3的倍数的序列有两种,112121212…或者2212121…,这时候就要考虑0情况的个数了,如果0情况为偶数,那么Alice在下一个取数一定导致3的倍数情况下无处可躲,比如111,222,任何一个情况为空,Alice都会输掉,至少有一个的情况都不会输。如果0的情况为奇数,那么情况就会翻转过来,这个时候只要破坏序列的规律就能获胜,那就是1和2的情况个数相差大于2,就肯定无法按照序列进行,到了1和2某个情况为空时,倒霉的就是Bob了,代码如下:

class Solution 
public:
    bool stoneGameIX(vector<int>& stones) 
        int value[3] = 0;
          for(auto& stone : stones) 
              value[stone % 3] ++;
        
        if(value[0] % 2 == 0) return value[1] != 0 && value[2] != 0;
        return abs(value[2] - value[1]) > 2;
    
;

以上是关于LeetCode 2029 石子游戏IX[博弈论 模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

5892. 石子游戏 IX (博弈)

解题报告力扣 第 261 场周赛

石子游戏 IX——一场关于模运算加和规律的博弈

POJ1067 取石子游戏 威佐夫博弈 博弈论

bzoj 1115: [POI2009]石子游戏Kam -- 博弈论

bzoj1115[POI2009]石子游戏Kam(博弈论)