在 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