用 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)
从第二堆和第三堆中选择,因此当前状态为 (0, 1, 1)
从第二堆和第三堆中选择,因此当前状态为 (0, 0, 0)
最后非空堆少于两个,因此游戏结束。
为了解决这个问题,我们将遵循以下步骤 −
minimum := a、b 和 c 中的最小值
maximum := a、b 和 c 中的最大值
left := a + b + c - maximum - minimum
如果 maximum-left <= minimum,则
返回 minimum + left - (1 + minimum - (maximum-left))/2 的商
返回 minimum + ((maximum-minimum) 和 left 的 minimum)
示例
让我们看看下面的实现以便更好地理解 −
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

