在 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

以上是 在 Python 中通过去除石头找到最高分数的程序 的全部内容, 来源链接: utcz.com/z/341325.html

回到顶部