假设有 3*n 堆硬币,它们大小不一,三个玩家正在玩这样的游戏 -
在每一步中,玩家 1 将选择任意 3 堆硬币。
玩家 2 将选择硬币数量最多的那堆。
玩家 1 将选择具有最大数量硬币的下一堆。
Player3 将选择最后一堆。
重复这些步骤,直到没有更多的硬币堆。
现在,如果我们有一个称为堆的整数数组,其中堆 [i] 是第 i 堆中的硬币数量,那么我们必须找到玩家 1 可以拥有的最大硬币数量。
所以,如果输入像堆 = [2,4,1,2,7,8],那么输出将是 9,因为首先我们可以选择一个三元组 (2,7,8),然后 Player2 选择 8,玩家 1 选择 7,玩家 3 选择 2。然后再次选择三元组 (1,2,4),然后玩家 2 选择硬币 4 堆,然后玩家 1 选择 2,剩下的 1 给玩家 3。目前玩家 1 有 7+2 = 9 个硬币,这是最大值。
为了解决这个问题,我们将按照以下步骤操作 -
对列表堆进行排序
答案:= 0
而桩的大小不等于0,做
ans := ans + 堆中的倒数第二个元素
从堆中删除倒数第二个元素
从堆中删除最后一个元素
从堆中删除第一个元素
返回答案
让我们看看以下实现以获得更好的理解 -
def solve(piles): piles.sort() ans = 0 while(len(piles)!=0): ans = ans + piles[-2] del piles[-2] del piles[-1] del piles[0] return ans piles = [2,4,1,2,7,8] print(solve(piles))
[2,4,1,2,7,8]输出结果
9