一.
動態規劃,它是解決 多過程問題的一種方法,它包括兩種思想(區域性原則和區域性最優原則)即把乙個問題通過狀態轉移方程(通常是遞迴)劃分成多個子問題,然後再按步驟尋找區域性最優解,這樣按步驟得到最優解。
技巧:通過做這幾道題來看,有的題目完全就是可以通過dp,遞迴等別的方法來解決,動態規劃的優點是用乙個陣列來儲存 狀態值,用空間換取了時間(記憶化搜尋)。這類題目難點就在於想到用這個方法還有思考出狀態轉移方程的過程,假如說如果實在想不出狀態轉移方程就比如說那個(折線劃分區域的題目)不好想,就可以採用待定係數法,
f(x)=a*x^2+b*x+c,,f(x)=a*x^3+b*x^2+c*x+d代數來解決。
這裡要記住幾類題目:1 求最大字段長的和( 可以擴充套件到兩段乃至m段的子段長的問題)前者
列舉兩個欄位的起始點i j ,後者:其中dp[i][j]是ij為起始點的子段,最後求dp[m][n]即可。
dp[i][j] = max+a[j] (i = 1,i <= j <= n)
dp[i][j] = max+a[j] (2 <= i <= m , i <= j <= n)
2 子矩陣的和 先列舉再壓縮成一維的字段處理
3 公式題型 二
揹包基礎,分為01揹包,完全揹包,多重揹包,區間揹包,沒神魔好說的,就是套公式。
上模板:
01揹包
for i=1..n
for v=v..0
f[v]=max;
完全揹包
for i=1..n
for v=0..v
f[v]=max;
多重揹包:
void zeroonepack(int cost,int wei)
}void complete(int cost,int wei)
}void mutiplepack(int cost,int wei,int cnt)
else
{int p=1;
while(p
SDAU練習三總結
動態規劃程式設計是對解最優化問題的一種途徑,是解決多階段決策問題的一種方法。在每乙個階段都需作出決策,並影響到下乙個階段的決策。多階段決策問題,就是要在可以選擇的那些策略中間,選取乙個最優策略,使在預定的標準下達到最好的效果動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解...
專題三總結
這個專題講的是動態規劃的內容,到現在為止,已經做了3 個專題了,我個人認為,動態規劃這個專題還是挺好做的,沒有剛開始老師說的的那麼難。先來點理論知識吧。所謂動態規劃,它是解決多階段決策問題的一種方法。動態規劃的指導思想就是在做每一步決策時,列出各種可能的區域性解,依據某種判定條件,捨棄那些肯定不能得...
三 總結指標知識
根據陣列定義可知,其在一塊記憶體中連續分配了一批相同資料型別的變數,這也為使用陣列下標進行資料操作提供了可能。因為編譯器能根據資料型別大小和陣列下標以及首元素位址直接計算出需要訪問的變數的位址,從而實現下標訪問的功能,提高了開發程式的效率。1 a 是乙個常量,故只能做右值,表示整個陣列的位址,數值上...