首页 > 其他分享 >3222. 求出硬币游戏的赢家

3222. 求出硬币游戏的赢家

时间:2024-11-05 14:48:25浏览次数:1  
标签:游戏 硬币 拿走 Alice 玩家 赢家 Bob 3222

给你两个 正 整数 x 和 y ,分别表示价值为 75 和 10 的硬币的数目。

Alice 和 Bob 正在玩一个游戏。每一轮中,Alice 先进行操作,Bob 后操作。每次操作中,玩家需要拿出价值 总和 为 115 的硬币。如果一名玩家无法执行此操作,那么这名玩家 输掉 游戏。

两名玩家都采取 最优 策略,请你返回游戏的赢家。

示例 1:

输入:x = 2, y = 7

输出:"Alice"

解释:

游戏一次操作后结束:

Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。
示例 2:

输入:x = 4, y = 11

输出:"Bob"

解释:

游戏 2 次操作后结束:

Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。
Bob 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。

解题思路:
游戏中有两个玩家 A 和 B。
每个玩家轮流拿走一定数量的硬币。
玩家 A 总是先手。
每次玩家可以选择拿走 1 枚或 2 枚硬币。
谁拿走最后一枚硬币谁就赢。

完整代码:
    class Solution {
      public String losingPlayer(int x, int y) {
          return canPlay(x, y) ? "Alice" : "Bob";
      }

      public static boolean canPlay(int x, int y) {
          // 如果当前玩家无法执行操作,返回 false
          if (x < 1 || y < 4) {
              return false;
          }

          // 当前玩家执行操作后,轮到下一个玩家
          return !canPlay(x - 1, y - 4);
      }
  }

标签:游戏,硬币,拿走,Alice,玩家,赢家,Bob,3222
From: https://www.cnblogs.com/java-cheng/p/18527938

相关文章

  • Leetcode刷题Python之3222.求出硬币游戏的赢家
    提示:本题难度很低,可以一行代码解决。文章目录一、题目描述二、解题思路二、代码实现代码解释总结一、题目描述给你两个正整数x和y,分别表示价值为75和10的硬币的数目。Alice和Bob正在玩一个游戏。每一轮中,Alice先进行操作,Bob后操作。每次操作中,玩......
  • 硬币游戏赢家 | 动态规划
    描述A和B两人玩硬币游戏。开始共有n个硬币。给定两个数字x和y。在每一步中玩家可以选择x、y或1个硬币。A总是开始比赛。选择最后一枚硬币的玩家获胜。对于给定的n值,假设游戏双方都会按最优的方式选择硬币,判断A是否能赢得游戏。用动态规划求解该问题。输入输入一个整数t表示......
  • AI 开始学习散户中赢家的股票交易方式,也许很快将超过人类
    作者:老余捞鱼原创不易,转载请标明出处及原作者。写在前面的话:     数据驱动的监督学习与强化学习相结合,在股票交易中呈现出巨大潜力。通过有序地引入训练样本(课程学习),可以加速收敛并优化解决方案。本文提出的金融课程学习方法在自动化股票交易中取得了超越常人......
  • 霍夫圆型硬币检测Matlab程序
    1.图像读取和预处理使用MATLAB的uigetfile函数读取图像,可以从文件系统中选择图像文件。读取的图像随后经过灰度化处理,将彩色图像转换为灰度图像,以降低计算复杂度并去除不必要的颜色信息。 2.中值滤波在图像预处理过程中,使用中值滤波来去除噪声。中值滤波是一种非线性滤波......
  • B 站 硬币奖励不合理规则 All In One
    B站硬币奖励不合理规则AllInOne......
  • [lnsyoj729/luoguP1450/HAOI2008]硬币购物
    题意给出一个长度为\(4\)的序列\(c\),给出\(n\)个询问,每个询问给出一个长度为\(4\)的序列\(d\)和整数\(s\),要求构造出长度为\(4\)的序列\(t\),使得\(s=\sum_{i=1}^4c_i\cdott_i\),且\(\forall(x\in\R)\land(1\lex\le4),t_x\led_x)\),求\(t\)的方......
  • PTA 7-3-1 换硬币(C语言)
    将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量,fen2:2分硬币数量,......
  • 抛硬币(概率dp)
    https://www.luogu.com.cn/problem/AT_dp_i第1题   抛硬币 查看测评数据信息有n个质地不均匀的硬币,抛第i枚硬币器正面朝上的概率是p[i],反面朝上的概率是1-p[i],扔完n个硬币后,求正面朝上的个数大于反面朝上的概率是多少。结果保留三位小数输入格式 第一行一个整数n,......
  • (nice!!!)LeetCode 2952. 需要添加的硬币的最小数量(贪心、数组)
    题目:2952.需要添加的硬币的最小数量思路:假设区间[1,s-1]的数都可组合得到,当遍历到x=coins[i]时,1、当x<=s时,可以组合的数就是区间[1,s-1]和区间[x,s-1+x]的交集,即区间[1,s-1+x]2、当x>s时,区间[1,s-1]和区间[x,s-1+x]没有交集,那我就只能通过添加一个数来实现了。在这里......
  • Python项目开发实战,掷硬币的连胜,案例教程编程实例课程详解
    在Python中进行实战项目,比如模拟掷硬币并记录连胜次数,是一个既有趣又能加深理解随机数生成、循环控制、条件判断等编程基础的好方法。下面,我将逐步引导你完成一个详细的Python项目,该项目将模拟掷硬币的过程,并追踪记录连胜的次数,同时我们会深入探讨一些编程概念,如函数封装、异常......