leetcode 198強盜搶劫(動態規劃)

2021-08-29 07:38:22 字數 675 閱讀 1136

題目:你是乙個專業的強盜,計畫在街上搶劫房屋。 每個房子都藏著一定數量的錢,阻止你搶劫他們的唯一限制因素是相鄰的房屋有連線的安全系統,如果兩個相鄰的房子在同乙個晚上被闖入,它將自動聯絡**。給出乙個代表每個房子的金額的非負整數列表,確定今晚可以搶劫的最大金額而不警告警察。

input:[2,7,9,3,1]output:12explanation:rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1).

total amount you can rob = 2 + 9 + 1 = 12.

分析:不能取相鄰元素,大問題轉化為小問題。對每個元素進行判斷,並儲存當前元素下最大和。

如果輸入為空,返回0;如果輸入個數為1,返回這個數;如果說如個數為2,返回最大值。

輸入個數大於等於3,就需要運用動態規劃。將當前數字和往前數兩個(因為是隔乙個取)的數字和相加,並和往前數乙個的數字和進行對比,取最大。dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);

class solution 

return dp[size - 1];

}};

打家劫舍 LeetCode 198

這是一道線性動態規劃,當前的狀態只與特定數量的前邊狀態相關。狀態的定義 dp i 小偷偷到第i間房時,偷到的最大金額為dp i 狀態轉移方程 dp i max dp i 1 dp i 2 nums i 初始狀態 dp 0 0 dp 1 nums 0 直接使用dp陣列的,沒有進行空間優化 class ...

動態規劃 leetcode198

coding utf 8 遞迴class solution1 object def rob self,nums typenums list int rtype int return self.tryrob nums,0 考慮搶劫nums index,len nums 1 這個範圍的所有房子 不一定非...

LeetCode 198 打家劫舍

題目 你是乙個專業的強盜,計畫搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡 給定乙個代表每個房屋的金額的非負整數列表,確定你可以在沒有提醒 的情況下搶劫的最高金額。思路 本題的大致意思就是求取乙個...