動態規劃初識

2021-07-03 03:59:07 字數 692 閱讀 7686

適合用動態規劃的問題特徵:可以分解成相互重疊的若干子問題; 滿足最優性原理(結構性質):該問題的最優解中也包含著其子問題的最優解。一般地,子問題的聯絡體現在某種遞推關係,通過這種遞推計算可以把問題的解儲存起來,後期直接使用,避免重複運算。

簡單的dp例子:

遞推關係:m[i][j]=m[i-1][j]+m[i][j-1]

#include #includeusing namespace std;

int main()

for(i=1;i<16;i++)

}while(cin>>n&&n)

return 0;

}

再來乙個:

遞推關係題目已經說明了,不用我們去研究,現在要解決的是如何判斷「新產生的數字沒有在之前出現過」,最快的方法:以空間換取時間,用乙個標記陣列來快速判斷。

#include #includeusing namespace std;

const int maxn=5e5+5;

bool judge[maxn*100]; //估計的大小,標記陣列

int number[maxn];

int main()

else

}while(cin>>k&&k!=-1)

return 0;

}

初識動態規劃

有乙個矩陣map,它每個格仔有乙個權值。從左上角的格仔開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。給定乙個矩陣map及它的行數n和列數m,請返回最小路徑和。保證行列數均小於等於100.輸入輸出樣例 第一行,輸入n,m表示這個矩陣...

初識動態規劃

let maxw 0 最大可放重量 let weight 2 2,4 6,3 物品重量 let n weight.length let w 11 揹包最大可承受重量 let men for let i 0 i n i men.push f 0,0 11 function f i,cw f i 1,c...

初識動態規劃

動態規劃 dynamic programming 是運籌學的乙個分支,是求解決策過程 decision process 最優化的數學方法。20世紀50年代初美國數學家r.e.bellman等人在研究多階段決策過程 multistep decision process 的優化問題時,提出了著名的最優化...