Menu
CoddyTech

Burst Balloons

むずかしい動的計画法python iconjava iconcpp iconc iconjs icon+10

風船が一列に並んでおり、numsで与えられます。nums[i]は風船iに書かれた数字です。すべての風船を、任意の順序で1つずつ割ります。風船を割ると、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

発展問題

最も多くのコインを獲得できる、もう1つの爆発順も返せますか?

コードをリセット
def maxCoins(nums):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

nums = [2, 4, 3]

期待される出力

33