假设 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