動態規劃此一篇就夠了 萬字總結!
阿新 • • 發佈:2021-01-26
## 目錄
```
首先,先大致列下這篇文章會講到什麼
1.相較於暴力解法,動態規劃帶給我們的是什麼?為什麼會有重疊子問題以及怎麼去避免的?
2.用不同難度的動態規劃問題舉例說明, 最後會使用《打家劫舍》系列三個題再重溫一次.
一、動態規劃帶給我們的優勢
傳統遞迴 vs. DP
1. 先 遞迴解決
2. 後 動態規劃解決
3. 動態規劃 + 優化
二、動態規劃四大解題步驟處理問題
步驟一:定義dp陣列的含義
步驟二:定義狀態轉移方程
步驟三:初始化過程轉移的初始值
步驟四:可優化點(可選)
案例一:打家劫舍I 「來自leetcode198」
步驟一: 定義dp陣列的含義
步驟二:找出關係元素間的動態方程
步驟三:初始化數值設定
步驟四:優化
案例二:不同路徑「來自leetcode62」
步驟一:定義dp陣列的含義
步驟二:找出關係元素間的動態方程
步驟三:初始化數值設定
步驟四:優化
案例三:不同路徑II 「來自leetcode63」
步驟一:定義dp陣列的含義
步驟二:找出關係元素間的動態方程
步驟三:初始化數值設定
步驟四:優化
案例四:打家劫舍II 「來自leetcode213」
步驟一: 定義dp陣列的含義
步驟二:找出關係元素間的動態方程
步驟三:初始化設定
步驟四:優化
案例五:打家劫舍III 「來自leetcode337」
步驟一: 定義dp陣列的含義
步驟二:找出關係元素間的動態方程
步驟三:初始化設定
```
> 動態規劃 - 超詳細系列
>
> 該文章較長,比較詳細的闡述了動態規劃思想,請耐心跟著思路走下去
## 動態規劃 - 超詳細系列
**動態規劃**,一直以來聽著就是一種很高深莫測的演算法思想。尤其是上學時候演算法的第一堂課,老師巴拉巴拉列了一大堆的演算法核心思想,**貪心、回溯、動態規劃**... ...,開始感覺要在演算法世界裡遊刃有餘的進行解決各種各樣牛B問題了,沒想到的還是稀裡糊塗學過了之後還就真的是學過了(大學的課程還真是一個樣子)。再後來才明白,大學的課程一般來說就是入門級講解,用來開拓眼界的,真正想要有一番自己的見解,必須要在背後下一番辛苦,形成自己的**思考邏輯**。
再後來返回頭來看,**動態規劃**理解起來還是比較困難,什麼**重疊子問題、動態轉移方程,優化點**等等等等,稀裡糊塗,最後痛定思痛,好好看著其他人的分享理解了一部分,瘋狂刷題幾十道。算是基本可以佛擋殺佛了.
在我的這些學習積累過程中,總結出來希望可以給到大家一點小小的幫助,相信在讀完這篇文章的時候,你會感覺到**動態規劃**給你帶來的奇妙之處。也一定對**動態規劃**形成自己的**思考方式**. 很