Menu
CoddyTech

Burst Balloons

困难动态规划python iconjava iconcpp iconc iconjs icon+10

给定一排气球,用 nums 表示,其中 nums[i] 是气球 i 上的数字。你可以按任意顺序一次戳破一个气球,直到戳破所有气球。戳破一个气球可获得 left × nums[i] × right 枚硬币,其中 left 和 right 分别是它当前相邻气球上的数字,也就是仍在这一排中的最近左右气球。如果某一侧没有相邻气球,则该侧的数字按 1 计算。戳破气球后,它的两个相邻气球会变成相邻气球。返回你最多能获得多少枚硬币。

函数

maxCoins(nums: integer-array) → integer
numsinteger-array
气球上的数字,从左到右
返回值integer
戳破所有气球后,你最多能收集到的金币数

约束条件

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • 答案小于 3 × 108,因此可以用 32 位有符号整数表示。

示例

输入
nums = [2, 4, 3]
输出
33
解释
让 4 爆裂,得到 2 × 4 × 3 = 24。现在 2 挨着 3,得分为 1 × 2 × 3 = 6,而 3 得 3 分:总共 33 分。
challenge icon

进阶

你还可以返回一个能赚取最多金币的爆发订单吗?

重置代码
def maxCoins(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [2, 4, 3]

预期输出

33