動態規劃 九章演算法

2021-09-28 14:41:46 字數 870 閱讀 7712

最近看了九章演算法的動態規劃班,受益匪淺,一點簡要的筆記分享給大家

什麼是動態規劃?

簡而言之,就是計算並儲存小問題的解,並將這些解組合成大問題的解。

動態規劃題目的特點:

1、計數

(1)有多少種方式走到右下角

(2)有多少種方法選出k個數使得和為sum

2、求最大值最小值

(1)從左上角到右下角路徑的最大數字和

(2)最長上公升子串行長度

3、求存在性

(1)取石子遊戲,先手是否必勝

(2)能不能選出k個數使得和為sum

問題1:使用最少的硬幣數量組成27,硬幣面額有三種:2、5、7

總結:求最值型動態規劃

此題也可以採用遞迴的方法實現,但是由於遞迴的重複性計算會導致時間複雜度太高。

動態規劃的組成部分:

1、確定狀態

(1)最後一步(最優策略中使用的最後一枚硬幣ak)

(2)化成子問題(最少的硬幣拼出更小的面值27-ak)

2、轉移方程

f[x]=min

3、初始條件和邊界情況

f[0]=0, 如果不能拼出y,使f[y]為正無窮

4、計算順序

f[0]、f[1]、f[2]…

這裡是我用c++實現的**片段:

九章演算法筆記D1 動態規劃概述

tags 大家覺得寫還可以,可以點讚 收藏 關注一下吧!也可以到我的個人部落格參觀一下,估計近幾年都會一直更新!和我做個朋友吧!計數型 機械人 存在型 青蛙跳石子 機械人2 座標型 leetcode256 粉刷房子 序列型 decode ways 確定狀態 確定轉移方程 初始條件和邊界情況 計算順序...

第九章 動態規劃 1305 Maximum sum

輸入樣例 110 1 1 2 2 3 3 4 4 5 5 輸出樣例 13 提示 就是求最大子段和問題,樣列取2,2,3,3,4和5,baidu搜poj 2479 maximum sum,可獲得大量經典最大子段和問題的題目解析,本題o n2 演算法超時,必須用o n 演算法。思路 從左到右分別求出它們...

第九章(二)DAG上的動態規劃

dag上的動態規劃 有向無環圖上的動態規劃是學習dp的基礎,很多問題都可以轉化為dag上的最長路 最短路或路徑計數問題。1.沒有明確固定起點重點的dag模型 巢狀矩形問題 有n個矩形,每個矩形可以用兩個整數a b表示它的長和寬,矩形可以巢狀在矩形中當且僅當a選出盡量多的矩形排成一行,使得除了最後乙個...