マツシタのお勉強

隣接する要素は盗めない泥棒 House Robber in LeetCode 動的計画法

問題

N個の整数を持つ配列が与えられる。隣接する要素は取れないという条件で、各要素の和の最大を求める問題。


[1, 2, 3, 4, 5]
という配列の場合は以下のようなとり方がある
1 , 3, 5 → 9
1, 4 → 5
1, 5 → 6
2, 4 → 6
2, 5 → 7
max = 9

leetcode.com

解法

上記のサンプルのように、深さ優先探索を用いて要素を取得していく。 その際、i番目の要素を取得した場合、その次の要素の取り方は一様なので、i番目の要素を取った時の最大値を保存しておくことでその値を再利用できる。

解法