S
整数のシーケンスと正のN
整数が与えられた場合W
、それらの合計の重みが正確にWであり、それらの合計が最大になるような、重複しない間隔のセットを見つけます。
For a chosen interval [i,j]:
- Weight([i,j]) = j-i+1
- Sum([i,j]) = S[i+1] + S[i+2] + ... + S[j].
例
S = (12, 9, 1, 2, 8, -1), W = 4
Choose [1,2] and [4,5] with total_sum = Sum([1,2]) + Sum([4,5]) = 9 + 8 = 17
(12 9 _ 2 8 _)
この問題は、ナップサック問題と加重間隔スケジューリングに少し似ていますが、これははるかに簡単な方法で解決できると思います。
私の考えは動的計画法を使用してletを使用することでしたがP[i][k] be the maximum total sum of the first i elements, using only k elements
、答えはですがP[N][W]
、サブ問題間の関係を思い付くことができませんでした。