劍指offer-動態規劃

動態規劃可分爲兩種:

一是沒有約束條件的動態規劃,比如剪繩子,跳臺階。

二是有約束條件的動態規劃,比如揹包問題。

1.剪繩子

從小往大遞推:

f(1)=1

f(2)=f(1)*f(1) =1

f(3)=f(2)*f(1)

f(4)=f(3)*f(1) 或者是 f(2)*f(2)

寫兩層for循環,第一層for循環是對數字n進行遍歷,第二層for循環是對f(n)的計算進行遍歷,比較是f(j)*f(h)大,還是直接j*h大(切分兩段)

類似的題目可以是:

寫出到自然數n爲止,加和等於n的數字集合。

比如n=2,返回結果爲[1,1],

n=3,返回結果爲[1,2],[1,1,1]

 

2.揹包問題

https://zhuanlan.zhihu.com/p/107139719

https://zhuanlan.zhihu.com/p/93857890

https://www.bilibili.com/video/av33930433?from=search&seid=10637513335818789097

0-1揹包問題的數學描述。

https://www.cnblogs.com/chiweiming/p/8621374.html

注意初始化不能用第一種,第一種是錯的。賦值的時候不是想象中那樣,應該是地址問題。

語法糖不能隨便亂用https://blog.csdn.net/five3/article/details/83474633

3.買賣股票的最大時機

1.二層遍歷,超時

2.一層遍歷,用一個變量來記錄前面出現過的最小值。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章