動態規劃演算法使用特點與例題

2021-10-08 16:56:14 字數 632 閱讀 1103

計數

-有多少種方式走到右下角

-有多少方式選出k個數使得和是sum

求最大最小值

-從左上角走到右下角路徑的最大數字和

-最長上公升的子串行長度

求存在性

-取石子遊戲,先手是否必勝

-能不能選出k個數使得和是sum

有三種硬幣,分別面值2元,5元和7元,每種硬幣都有足夠多。若需要買一本書,如何用最少的硬幣組合正好付清,不需要對方找錢?

拼出x所需要的最少硬幣數為:

f [x

]=mi

n(f[

x−2]

+1,f

[x−5

]+1,

f[x−

7]+1

)f[x]=min(f[x-2]+1,f[x-5]+1,f[x-7]+1)

f[x]=m

in(f

[x−2

]+1,

f[x−

5]+1

,f[x

−7]+

1)從0開始計算,直到f[27],最終得到f[27]為5。

參考:

動態規劃演算法例題

題目 有乙個序列 3,5,9,0,2,8,3,9,5,9,2,8 取其中不相鄰子串行,求可能的最大值是多少?思路 用動態規劃來求解。對於最後乙個元素,可以分成兩種情況,取還是不取。如果取,那麼我們在8的基礎上再加上前10個元素組成的序列求得的最大值,如果不取,那麼我們考慮前11個元素組成的序列即可。...

動態規劃演算法

一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...

動態規劃演算法

動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...