j]となる入れる場合はi-1番目の時点でのjからi番目の品物の重さを引き、i番目の品物の価値を足したものになる。i番目の品物の価値というやつ。ちなみにこのメモに書いてあったんだけど、2次元配列でやっているが、実際はループの構造からもわかるように、ひとつ上のインデックスを見て現在の重さを判断している。要はひとつ前のリストのみによって現在のリストを更新しているので、実質はひとつのリストしか必要ない。いうことなので、このような最終的に最大化した価値だけを求める典型問題だと最大許容量+1ぶん詰める1次元配列だけあればいい。breakprint(dp[-1])AOJでは、最初のやりかただと1000ミリ秒ちょい、短くしたバージョンだと600ミリ秒くらいになった。(1)はてなブログをはじめよう!or3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。