题目:
Alice 和 Bob 再次设计了一款新的石子游戏。现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值。给你一个整数数组 stones ,其中 stones[i] 是第 i 个石子的价值。
Alice 和 Bob 轮流进行自己的回合,Alice 先手。每一回合,玩家需要从 stones 中移除任一石子。
如果玩家移除石子后,导致 所有已移除石子 的价值 总和 可以被 3 整除,那么该玩家就 输掉游戏 。
如果不满足上一条,且移除后没有任何剩余的石子,那么 Bob 将会直接获胜(即便是在 Alice 的回合)。
假设两位玩家均采用 最佳 决策。如果 Alice 获胜,返回 true ;如果 Bob 获胜,返回 false 。

例:
输入:stones = [5,1,2,4,3]
输出:false
解释:Bob 总会获胜。其中一种可能的游戏进行方式如下:

  • 回合 1:Alice 可以移除值为 1 的第 2 个石子。已移除石子值总和为 1 。
  • 回合 2:Bob 可以移除值为 3 的第 5 个石子。已移除石子值总和为 = 1 + 3 = 4 。
  • 回合 3:Alices 可以移除值为 4 的第 4 个石子。已移除石子值总和为 = 1 + 3 + 4 = 8 。
  • 回合 4:Bob 可以移除值为 2 的第 3 个石子。已移除石子值总和为 = 1 + 3 + 4 + 2 = 10.
  • 回合 5:Alice 可以移除值为 5 的第 1 个石子。已移除石子值总和为 = 1 + 3 + 4 + 2 + 5 = 15.
    Alice 输掉游戏,因为已移除石子值总和(15)可以被 3 整除,Bob 获胜。

思路:
1.不考虑0的情况时所取的序列有两种情况112121212…和221212121…,0可以插入在任意非首位的位置;
2.当s[0]为偶数时,若1或2个数为零,要么石头能取完,要么111,Alice会拿到3的倍数也会输,所以在此情况下,只能1和2的个数都不为0,Alice为先手且最佳决策,Alice必赢;
3.若均不为零时,Alice取少的一个则必赢,相等时取任一个均能赢;
4.当s[0]为奇数时,次序能颠倒,故当1和2个数相差大于2时,取多的一个则在颠倒次序后Alice必赢,否则就输;

解:

class Solution {public:bool stoneGameIX(vector<int>& stones) {int s[3] = {0, 0, 0};for (int i : stones)      //相当于从stones中的值逐个取出给i++s[i % 3];             //将石子价值按照模3余数分类计数if (s[0] % 2 == 0)          //模3余数是零的个数为偶数return s[1] != 0 && s[2] != 0;      //1和2的个数都不为0且Alice为先手return s[2] > s[1] + 2 || s[1] > s[2] + 2;      //可整除3的数为奇数个,所以次序可以颠倒,只有1和2的个数相差大于2时,取多的一个Alice才可以赢}
};

难点:
1.考虑Alice所有能赢的情况;

2029. 石子游戏 IX(C++解法与思路)相关推荐

  1. 2029. 石子游戏 IX

    2029. 石子游戏 IX Alice 和 Bob 再次设计了一款新的石子游戏.现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值.给你一个整数数组 stones ,其中 stones[i] ...

  2. leetcode每日一题2029. 石子游戏 IX 博弈相对论 不战而屈人之兵

  3. 【数据结构与算法】之深入解析“石子游戏IX”的求解思路与算法示例

    一.题目描述 Alice 和 Bob 再次设计了一款新的石子游戏,现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值,给你一个整数数组 stones ,其中 stones[i] 是第 i 个 ...

  4. 【博弈论】leetcode2029. 石子游戏 IX

    题目: Alice 和 Bob 再次设计了一款新的石子游戏.现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值.给你一个整数数组 stones ,其中 stones[i] 是第 i 个石子的 ...

  5. 2029.石子游戏 IX-LeetCode

    难度:中等 目录 一.问题描述 二.解题思想 三.解题 1.判断极端情况 2.代码实现 一.问题描述 这里我直接采用的LeetCode上面的问题描述. Alice 和 Bob 再次设计了一款新的石子游 ...

  6. 2022.01.20 - 214.石子游戏 IX

    文章目录 1. 题目 2. 思路 (1) 博弈论 3. 代码 1. 题目 2. 思路 (1) 博弈论 只需将石子分成三类即可,即除3余0.1.2的石子,每次累加的和也都对3取余. 若和为0,则游戏直接 ...

  7. LeetCode2029. 石子游戏 IX

    相关信息: LeetCode链接: https://leetcode-cn.com/problems/stone-game-ix/ 代码: //作者:LeetCode-Solution public ...

  8. Python每日一练(20230510) 石子游戏 VII\VIII\IX

    目录 1. 石子游戏 Stone Game VII 2. 石子游戏 Stone Game VIII 3. 石子游戏 Stone Game IX

  9. 【数据结构与算法】之深入解析“石子游戏VII”的求解思路与算法示例

    一.题目描述 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 . 有 n 块石子排成一排,每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之和相等的得 ...

最新文章

  1. Jmeter自定义函数和引入外部文件的几种方法
  2. 第2周项目2程序的多文件组织
  3. Lua 文件 I/O
  4. C++ socket编程 实现服务端与客户端的通讯
  5. Transformation HDU - 6726(百度之星复赛2019 dfs)
  6. 遥控开关在云智能物联网领域:智能养殖高效、生态、安全!
  7. (转)编码剖析Spring管理Bean的原理
  8. 1-概述程序构成基本元素
  9. office2010 反应慢_office2010打开时间太慢。怎么办?
  10. 服装打版软件ET2019淘宝100RMB买的
  11. 《当程序员的那些狗日日子》二
  12. 线段树入门(线段懵逼树、加了一些解释,丰富了一下内容)
  13. Windform c# pictureBox 更换背景图片
  14. 武汉php东和,武汉探东之旅,未完成
  15. SVC的主要作用及应用范围
  16. dojo的API功能介绍
  17. ERWIN中的一对多标识关系和一对多非标识关系
  18. web前端项目实战_vue项目仿美团【爱创课堂】
  19. HTML5 Video播放本地文件
  20. Python——读取xlsx格式的Excel表格

热门文章

  1. matlab极性rz编码,单极性归零(RZ)波形及其Matlab仿真.doc
  2. 高红梅:第三章 海明威社会身份的定位 第一节 文学梦与作家身份的认同
  3. clap与slap_slap-slap和clap有什么区别?slap和c – 手机爱问
  4. 买《Python从小白到大牛》专题视频课程,送配套纸质图书
  5. Unable to negotiate with 100.9.70.30 port 29418: no matching key exchange method found
  6. 中东地区的最大节日,卧兔网络带你看斋月营销套路
  7. filemanager-webpack-plugin 打包自动压缩zip
  8. 黑暗逃生服务器显示无,《黑暗逃生》常见问题解决方法 游戏进不去?
  9. 问题-栈S最多能容纳4个元素,现有6个元素按A、B、C、D、E、F顺序进栈,问可能的出栈顺序。...
  10. Jmeter连接sqlSever踩的坑