動態規劃演算法主要的核心思想是:狀態和狀態轉移方程。怎麼理解這個問題呢?
先拿到了乙個數字三角形的程式,閱讀了它的動態規劃的**,但是看不明白!不明白在什麼地方呢?在具體的執行過程各個變數的變化方向。比如兩層for迴圈,i為逆序,j為次序。那麼這種執行次序就沒有辦法想象了。
那就先不管上面的了,先看dag上面的動態規劃。
抄了一遍poj2479這個題目的答案。大致理解這個題目的解題思路是,先順序去搜尋最大連續子串值存在乙個陣列裡面,再逆序去搜尋逆序的最大子串值,該值與當前搜尋到的位置的順序的子串值陣列項相加,取所有和中最大的那個。
抄了一遍後感覺對演算法的理解更深了,因為每乙個處理步驟都記在腦中了。所以學習離散的知識,關鍵還是每乙個處理步驟的記憶,記得多了後再融會貫通。
理解動態規劃演算法
動態規劃的思想是將乙個問題分解為若干子問題,並且子問題之間還有重疊,通過先求解這些子問題的最優解,將原問題的最優解通過這些子問題的最優解構造出來,從而得到原問題的最優解。由此可以得到動態規劃演算法的應用場景 若求乙個問題的最優解 通常是求最大值或者最小值 而且該問題能夠分解成若干個子問題,並且子問題...
動態規劃演算法的理解
恢復內容開始 1.對動態規劃演算法的理解 官方解釋 自己的理解 在解決乙個問題時,需要找出最優解。在最優解會有很多個小的子解組成,那麼在選擇子解的過程中需要篩選掉明顯不合適的解 因為所有的解都遍歷會耗費大量的時間 保留可能的最優解,就能節約求解的時間。2.程式設計第一題的核心 def length ...
動態規劃演算法理解
幾個月前已經弄懂了的演算法,現在回憶起來這麼費勁。又得重頭開始,真是浪費生命啊。再好的腦袋也不如爛筆頭!這裡用最長公共子串行問題 lcs 來說明演算法 給定兩個序列 x y 求x y長度最長的公共子串行。前期儲備知識 公共子串行不等於公共字串 注意區分 例如,如果x y 那麼就是x和y的公共子串行,...