【发布时间】:2018-02-10 03:15:32
【问题描述】:
我正在尝试“聪明的小偷”问题,我们有一个相邻房屋价值的列表,目的是最大化利润。一个限制是,一旦房子被抢劫,它左边或右边的房子就不能被抢劫。我已经设法通过以下代码找出了战利品的最大值:
def max_theft(house_val, n):
if n == 0:
return 0
if n == 1:
return house_val[0]
if n == 2:
return max(house_val[0], house_val[1])
max_theft_val = [0]*n
max_theft_val[0] = house_val[0]
max_theft_val[1] = max(house_val[0], house_val[1])
for i in range(2, n):
max_theft_val[i] = max(house_val[i]+max_theft_val[i-2], max_theft_val[i-1])
return max_theft_val
但是,问题的下一部分将是确定哪些房屋可以弥补这一总和。有没有办法解决这个问题?
【问题讨论】:
标签: python dynamic-programming