用 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