現在、アルゴリズムのクラスを受講しています。動的プログラミングを含め、Pythonでそれらの多くをテストしています。これは、ボトムアップのロッド切断の実装です。
off-by-one エラーのため動作しません。デフォルトの配列インデックスを 0 ではなく 1 に変更できる Python のグローバル設定はありますか? または、誰かが、私が何百万回も遭遇するオフバイワンエラーを克服するためのより良い戦略を教えてください. 超迷惑です。
def bottom_up_memo_cut_rod(p,n):
r = [ 0 for i in range(n) ]
r[0] = 0
for j in range(n):
q = -1
for i in range(j):
q = max(q, p[i] + r[j-i])
r[j] = q
return r[n]
bottom_up_memo_cut_rod([1,5,8,9], 4)
この場合、答えは 10 である必要があり、4 を (2,2) に分割すると、最大価格は 10 になります。