leetcode打家劫社简单实现--python

本文介绍了一种使用动态规划算法解决特殊抢劫问题的方法。给定一个数组,代表每家的金钱,不能抢劫相邻两家,求最大抢劫金额。通过动态规划遍历数组,比较并更新dp数组,最终得到最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个数组代表每家的金钱:
[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值