用 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"

示例

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

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]

输出

Amal

更新于: 2021 年 10 月 23 日

169 次浏览

助力你的 职业生涯

完成课程并获得证书

开始
广告