给定一个数组代表每家的金钱:
[1, 2, 0, 4, 6]
不可以抢劫相邻两家的金钱, 可以抢劫相隔的两家, 求最大值
1+0+6 = 7
2+4 = 6
max = 7
思路:
动态规划, 遍历数组, 当i =2 时, 比较 dp[i-2] + dp[i] 和 dp[i-1], 选择大的更新dp数组
def robber(arr):
if len(arr) == 0:
return None
elif len(arr) == 1:
return arr[0]
else:
memo = arr
for i in range(2, len(arr)):
memo[i] = max(memo[i-2]+memo[i], memo[i-1])
return max(memo)
test = [1, 0, 2, 8, 4]
robber(test)
8