用 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