使用Python找出可以得到的最大硬币数的程序

使用Python找出可以得到的最大硬币数的程序

假设有3 * n堆硬币,它们的大小不同,有三个玩家玩一个游戏,如下所示 –

  • 在每一步中,player1将选择任意3堆硬币。

  • 他可以选择手中硬币最多的那堆,玩家2将选择这堆。

  • 然后,player1将选取下一个具有最大数量的堆。

  • 牌手3选中最后一堆。

  • 重复这些步骤,直到没有多余的硬币堆。

现在,如果我们有一个名为piles的整数数组,其中piles[i]是第i堆硬币中的硬币数量,则我们必须找出Player1可以拥有的最大硬币数。

因此,如果输入是piles = [2,4,1,2,7,8],则输出将为9,因为首先我们可以选择三元组(2,7,8),然后Player2将选择8,Player1将选择7,2次选择Player3。然后再次选择三元组(1,2,4),然后Player2选择硬币4的堆,然后Player1选择2和剩下的1个为Player3。当前Player1拥有7 + 2 = 9个硬币,这是最大的。

为了解决这个问题,我们将遵循以下步骤−

  • 对列表piles进行排序

  • ans:= 0

  • 当piles的大小与0不同时,执行

    • ans : = ans + piles的倒数第二个元素

    • 从piles中删除倒数第二个元素

    • 从piles中删除最后一个元素

    • 从piles中删除第一个元素

  • 返回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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程