用 Python 编写的找到数组移除游戏中获胜者的程序


假设 Amal 和 Bimal 正在玩一个游戏,他们有一个带有数字的数组 A。游戏规则如下

  • 总是由 Bimal 先开始
  • 在每一回合,一名玩家从数组中删除最大元素,并且所有出现在已删除元素右边的其他元素也将被删除。
  • 他们轮流进行游戏。
  • 移除所有剩余元素的玩家获胜。

因此,如果输入类似 nums = [5,2,6,3,4],那么输出将是 Amal,因为一开始 Bimal 将移除 [6,3,4],因此数组将变为 [5,2],然后 Amal 将移除所有元素,因此他将成为赢家。

要解决这个问题,我们将遵循以下步骤——

  • maximum := -1
  • count := 0
  • 对于 nums 中的每个 a,执行
    • 如果 a > maximum 非零,则
      • count := count + 1
      • maximum := a
  • 如果 count 模 2 等于 0,则
    • 返回 "Amal"
  • 返回 "Bimal"

示例

让我们看看以下实现以获得更好的理解——

Open Compiler
def solve(nums): maximum = -1 count = 0 for a in nums: if a > maximum: count += 1 maximum = a if count % 2 == 0: return "Amal" return "Bimal" nums = [5,2,6,3,4] print(solve(nums))

输入

[5,2,6,3,4]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

Amal

更新于: 2021 年 10 月 23 日

169 次浏览

助力你的 职业生涯

完成课程并获得证书

开始
广告