天天看點

動态規劃還不清楚?看這篇包你滿意!

目錄

首先,先大緻列下這篇文章會講到什麼
    1.相較于暴力解法,動态規劃帶給我們的是什麼?為什麼會有重疊子問題以及怎麼去避免的?
    2.用不同難度的動态規劃問題舉例說明, 最後會使用《打家劫舍》系列三個題再重溫一次.
一、動态規劃帶給我們的優勢
傳統遞歸 vs. DP
    1. 先 遞歸解決
    2. 後 動态規劃解決
    3. 動态規劃 + 優化
二、動态規劃四大解題步驟處理問題
    步驟一:定義dp數組的含義
    步驟二:定義狀态轉移方程
    步驟三:初始化過程轉移的初始值
    步驟四:可優化點(可選)
案例一:打家劫舍I 「來自leetcode198」
    步驟一: 定義dp數組的含義
    步驟二:找出關系元素間的動态方程
    步驟三:初始化數值設定
    步驟四:優化
案例二:不同路徑「來自leetcode62」
    步驟一:定義dp數組的含義
    步驟二:找出關系元素間的動态方程
    步驟三:初始化數值設定
    步驟四:優化
案例三:不同路徑II 「來自leetcode63」
    步驟一:定義dp數組的含義
    步驟二:找出關系元素間的動态方程
    步驟三:初始化數值設定
    步驟四:優化
案例四:打家劫舍II 「來自leetcode213」
    步驟一: 定義dp數組的含義
    步驟二:找出關系元素間的動态方程
    步驟三:初始化設定
    步驟四:優化
案例五:打家劫舍III 「來自leetcode337」
    步驟一: 定義dp數組的含義
    步驟二:找出關系元素間的動态方程
    步驟三:初始化設定
           

動态規劃 - 超詳細系列

該文章較長,比較詳細的闡述了動态規劃思想,請耐心跟着思路走下去

動态規劃 - 超詳細系列

動态規劃,一直以來聽着就是一種很高深莫測的算法思想。尤其是上學時候算法的第一堂課,老師巴拉巴拉列了一大堆的算法核心思想,貪心、回溯、動态規劃... ...,開始感覺要在算法世界裡遊刃有餘的進行解決各種各樣牛B問題了,沒想到的還是稀裡糊塗學過了之後還就真的是學過了(大學的課程還真是一個樣子)。再後來才明白,大學的課程一般來說就是入門級講解,用來開拓眼界的,真正想要有一番自己的見解,必須要在背後下一番辛苦,形成自己的思考邏輯。

再後來傳回頭來看,動态規劃了解起來還是比較困難,什麼重疊子問題、動态轉移方程,優化點等等等等,稀裡糊塗,最後痛定思痛,好好看着其他人的分享了解了一部分,瘋狂刷題幾十道。算是基本可以佛擋殺佛了.

在我的這些學習積累過程中,總結出來希望可以給到大家一點小小的幫助,相信在讀完這篇文章的時候,你會感覺到動态規劃給你帶來的奇妙之處。也一定對動态規劃形成自己的思考方式. 很