使用 Python 查找我们可以获得的最大硬币数量的程序
假设有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