計數
-有多少種方式走到右下角
-有多少方式選出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問題 最長...