【力扣198-打家劫舍】動態規劃(python3)
題目描述
https://leetcode-cn.com/problems/house-robber/
思路題解
用動態規劃的思想,把問題簡單化:
- 若當前有0間房屋:ans=0
- 若當前有1間房屋:ans=這1間房屋的金額
- 若當前有2間房屋:ans=這2間房屋的金額的最大值
- 若當前有3間房屋:ans=第2間和第1+3間的最大值
- 若當前有n(n>3)間房屋:ans=選k(第k間+前k-2間之和的金額)和不選k(前k-1間的金額)的最大值
程式碼如下:
class Solution:
def rob(self, nums: List[int]) -> int:
length=len(nums)
if length<=3:
if length==0:return 0
if length==1:return nums[0]
if length==2:return max(nums[0],nums[1])
if length==3:return max(nums[1],nums[0]+nums[2])
dp={}
dp[0]=nums[0]
dp[1]=max(nums[0],nums[1])
dp[2]=max(nums[1],nums[0]+nums[2])
for i in range(3,length):
dp[i]=max(nums[i]+dp[i-2],dp[i-1])
return dp[length-1]
相關文章
- 力扣練習-動態規劃力扣動態規劃
- 力扣-動態規劃全解力扣動態規劃
- 【圖解動態規劃】打家劫舍 II(四種解法)圖解動態規劃
- leetcode力扣 213. 打家劫舍 IILeetCode力扣
- 【力扣】數樓梯(動態規劃)(看來高精度不學不行了)力扣動態規劃
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- 動態規劃動態規劃
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃
- 動態規劃法動態規劃
- 模板 - 動態規劃動態規劃
- 動態規劃初步動態規劃
- 動態規劃分析動態規劃
- 動態規劃(DP)動態規劃
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃
- 動態規劃小結動態規劃
- [leetcode 1235] [動態規劃]LeetCode動態規劃
- 動態規劃專題動態規劃
- 動態規劃-----線性動態規劃
- 好題——動態規劃動態規劃
- 動態規劃初級動態規劃
- 淺談動態規劃動態規劃
- 3.動態規劃動態規劃
- 動態規劃題單動態規劃
- 動態規劃 總結動態規劃
- 雙序列動態規劃動態規劃
- 動態規劃方法論動態規劃
- [atcoder 358] 【動態規劃】動態規劃
- 區間動態規劃動態規劃
- 動態規劃(Dynamic programming)動態規劃
- 有關動態規劃動態規劃
- 動態規劃之數的劃分動態規劃
- 禮物的最大價值(一維動態規劃&二維動態規劃)動態規劃
- leetcode題解(動態規劃)LeetCode動態規劃
- [動態規劃] 區間 dp動態規劃
- (C++)DP動態規劃C++動態規劃
- 【CodeChef】Graph Cost(動態規劃)動態規劃
- leetcode總結——動態規劃LeetCode動態規劃
- 動態規劃練習題動態規劃