動態規劃 一文看懂動態規劃的本質

2022-05-02 13:42:06 字數 807 閱讀 2349

動態規劃通常是乙個很難的問題。我先分享乙個大v寫的文章,大家可以看看人家對於動態規劃的理解:

第一步:

是最重要的一步:定義d[i](一維動態規劃)或者d[i][j]並清楚的知道其含義!這一步,很重要,有的題目可以直接看出,有的題目則需要我們去自己挖掘提煉

第二部:

定義狀態轉移方程:

對於一維的動態規劃,也就是d[i]和d[i-1]或者進一步的d[i-2](通常來說是d[i]和d[i-1],d[i-2]的關係)的關係;

對於二維動態規劃,就是d[i][j]同d[i-1][j-1]或者d[i][j-1]或者d[i-1][j]或者d[i-1][j+1]或者d[i+1][j-1]的關係。

也就是,本質上,是定義當前狀態和鄰近狀態的轉移關係。這裡我們需要充分認識到,由於d[i]或者d[i][j]的含義是確定的,所以當前狀態和其上乙個狀態描述的物理意義是一樣的

第三步:

根據狀態轉移關係確立邊界:

通常對於一維的情況,會確立d[0],d[1];對於二維的情況,會確立d[0][0...n-1]和d[0...n-1][0],或者d[i][i](對角線),也就是對於二維而言,通常確立的邊界是首行首列或者對角線(二維dp是乙個矩陣)

上述三步的順序請不要搞錯了,嚴格按照上述三步求解動態規劃問題!!!!

經驗:大部分的題目通常需要二維的dp,尤其是涉及到字串的問題,百分之九十都是二維的dp;陣列類的通常是一維dp。

上述三步做完,基本大功告成!

動態規劃 一

在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分程若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。當然,各個階段決策的選取不是任意確定的,它依賴於當前面臨的狀態,又印象以後的發展,當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活...

動態規劃(一)

動態規劃的兩種常用形式 1 遞迴型 在函式中呼叫自身 優點 直觀,容易編寫 缺點 可能會因為遞迴層數太深導致爆棧,函式呼叫帶來額外時間開銷。無法使用滾動陣列節省空間。總體來說,比遞推型慢。2 遞推型 for迴圈 效率高,有可能使用滾動陣列節省空間。有的問題只能用遞迴解決,有的問題既可以用遞迴,也可以...

動態規劃 (一)

對於動態規劃的學習總共進行了兩節課,到現在為止還是一頭霧水,雖然看懂了老師上課講的例題,但是做v judge的時候還是都不太會,我主要認為我只知道了動態規劃的基本思想,就是將乙個大的問題,分成若干個小問題,但與貪心演算法不同的是,動態規劃中的每乙個小問題之間都相互影響,在每一步都取得最優解,且在不斷...