用 Python 找出游戏中可收集的最大积分的程序

假设我们正在玩纸牌游戏。我们得到了几张线性排列的卡片,每张卡片上都有一个数字。卡片上的数字是随机分布的;在卡片的开头和结尾插入两张卡片,卡片上有数字 1。现在,在游戏中,我们必须通过拿起给定的卡片来收集最大点数。卡片以数组“cards”表示,其中数组中的元素表示卡片的数量[i]。当我们拿起卡片 i 时,我们收集点卡 [i - 1] *卡[i] *卡[i + 1]。当我们拿起一张卡片时,cards[i - 1] 和cards[i] 成为邻居。因此,从这些给定的卡片中,我们可以找出我们可以收集的最大点数。

所以,如果输入像cards = [7, 5, 9, 10],那么输出就是1025

所以在游戏中,我们可以拿起 -

索引 1 处的卡片并获得 7 * 5 * 9 = 315 点。

该卡在新索引 1 处获得 7 * 9 * 10 = 630 点。

索引 1 处的卡片并获得 7 * 10 = 70 分。

最后一张牌并获得10分。

总分 = 315 + 630 + 70 + 10 = 1025

示例

让我们看看以下实现以获得更好的理解 -

def solve(cards):

   def search(x, y):

      temp = 0

      for z in range(x + 1, y):

         temp = max(temp, search(x, z) + search(z, y) + cards[x] * cards[z] * cards[y])

      return temp

   cards = [1] + cards + [1]

   return search(0, len(cards) - 1)

print(solve([7, 5, 9, 10]))

输入

[7, 5, 9, 10]
输出结果
1025

以上是 用 Python 找出游戏中可收集的最大积分的程序 的全部内容, 来源链接: utcz.com/z/317218.html

回到顶部