在 Python 中查找启动游戏的可能动作数量的程序

假设 Amal 和 Bimal 正在玩游戏。他们有 n 个装有一种或多种巧克力的容器。这些容器从 1 到 N 编号,其中第 i 个容器有 count[i] 个巧克力。现在的游戏就像。第一位玩家将选择一个容器并从中取出一个或多个巧克力。然后第二个玩家将选择一个非空容器并从中取出一个或多个巧克力,就像这样他们交替玩。当其中一名玩家无法拿走任何巧克力时,他/她就输掉了比赛。如果首先轮到 Amal,我们必须找出 Amal 可以采取多少种方式先走,从而使他始终获胜。

因此,如果输入类似于 count = [2, 3],那么输出将为 1,因为最初的容器类似于 [2, 3]。他们可以这样玩

  • Amal 从第二个容器中取出一块巧克力,所以目前 [2, 2]

  • Bimal 从第一个容器中取出一块巧克力,所以目前 [1, 2]

  • Amal 从第二个容器中取出一块巧克力,所以目前 [1, 1]

  • Bimal 从第一个容器中取出一块巧克力,所以目前 [0, 1]

示例

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

def solve(count):
   tmp = 0
   for c in count:
      tmp ^= c

   if not tmp:
      return 0
   else:
      moves = 0
      for c in count:
         moves += (tmp^c) < c
      return moves

count = [2, 3]
print(solve(count))

输入

[2, 3]
输出结果
1

猜你喜欢