在 Python 中通过去除石头找到最高分数的程序

假设我们有三个值 a、b 和 c。我们正在玩三堆大小分别为 a、b 和 c 的石头的纸牌游戏。玩家每回合选择两个不同的非空堆,从每个堆中取出一块石头,并在他的分数上加 1 分。当非空堆少于两个时,游戏结束。所以我们必须找到你能得到的最高分。

所以,如果输入像 a = 4, b = 4, c = 6,那么输出将是 7,因为初始状态是 (4, 4, 6),那么我们可以按照这些步骤 -

  • 从第 1 和第 2 堆中选择,因此当前状态为 (3, 3, 6)

  • 从第 1 和第 3 堆中选择,因此当前状态为 (2, 3, 5)

  • 从第 1 和第 3 堆中选择,因此当前状态为 (1, 3, 4)

  • 从第 1 和第 3 堆中选择,因此当前状态为 (0, 3, 3)

  • 从第 2 和第 3 堆中选择,因此当前状态为 (0, 2, 2)

  • 从第 2 和第 3 堆中选择,因此当前状态为 (0, 1, 1)

  • 从第 2 和第 3 堆中选择,因此当前状态为 (0, 0, 0)

最后有少于两个非空堆,所以游戏结束。

示例

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

def solve(a, b, c):
   minimum = min(a,b,c)
   maximum = max(a,b,c)
   left = a+b+c-maximum-minimum
   if maximum-left<=minimum:
      return minimum + left-(1+minimum-(maximum-left))//2
   return minimum + min(maximum-minimum,left)

a = 4
b = 4
c = 6
print(solve(a, b, c))

输入

4, 4, 6
输出结果
7

猜你喜欢