Menu
CoddyTech

Rod Cutting Problem

ふつう動的計画法python iconjava iconcpp iconc iconjs icon+10

長さが n の棒があります。ここで n = prices.length です。長さ k の切れ端は prices[k-1] で売れます。棒は好きなだけ整数の長さの切れ端に分割しても、そのまま1本で売ってもかまいません。すべて売って得られる金額の最大値を返してください。

関数

cutRod(prices: integer-array) → integer
pricesinteger-array
prices[k-1] は長さ k の棒片の価格であり、棒材の長さは prices.length です
戻り値integer
ロッド全体で稼げる最大金額

制約

  • 1 ≤ prices.length ≤ 1000
  • 1 ≤ prices[i] ≤ 105

例

入力
prices = [2, 5, 7, 8]
出力
10
説明
長さ 2 のピースを 2 つ売ると、5 + 5 = 10 になります。ロッドをそのまま売ると 8 を得られ、長さ 1 のピースと長さ 3 のピースを売ると 2 + 7 = 9 になります。
challenge icon

発展問題

ロッドを最大m回まで切断できるとしたらどうでしょうか?その場合、表の各エントリは何を知っておく必要があるでしょうか?

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

テスト #1

テスト #2

テスト #3

引数

prices = [2, 5, 7, 8]

期待される出力

10