動態規劃學習(2)

2021-08-13 04:11:17 字數 652 閱讀 6342

(1)題目:有n個重量和價值分為w(i),v(i)的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。

*限制條件:

1<=n<=100

1<=w(i),v(i)<=100

1<=w<=10000

(2)時間複雜度:o(w*n);

(3)總結:下面**為01揹包中經過優化後的方法。時間複雜度為o(w*n)。

(4)測試資料:sample input:首行為物品的個數n和目標價值w,緊隨其後有兩行,第一行為物品的重量,第二行為其價值。

sample output:輸出挑選的價值總和的最大值。

4 5

2 1 3 2

3 2 4 2

(5)**:

#include

#include

#include

using

namespace

std;

const

int max_n=1e2+6;

int n,w;

int w[max_n],v[max_n],dp[max_n][max_n];

int rec(int i,int j)

int main()

動態規劃學習筆記2

對於動態規劃問題最重要的是如何定義好dp陣列的含義,可以通過dp陣列前面的值推出後面的結果。對於0 1揹包問題,我定義的dp陣列的含義為 dp i 表示容量為i的選擇的最大價值。容量為w的袋子,i 1,w 對於容量為i的時候,當前第j j 0,n 個物品可以選擇裝進袋子或者不裝進袋子 也就是dp i...

動態規劃2

動態規劃是研究一類最優化問題的方法,在經濟 工程技術 企業管理 工農業生產及軍事等領域中都有廣泛的應用。近年來,在acm icpc中,使用動態規劃 或部分應用動態規劃思維 求解的題不僅常見,而且形式也多種多樣。而在與此相近的各類資訊學競賽中,應用動態規劃解題已經成為一種趨勢,這和動態規劃的優勢不無關...

動態規劃(2)

題目輸入格式 第1行 兩個數字r,c 1 r,c 100 表示矩陣的行列。第2.r 1行 每行c個數,表示這個矩陣。輸出格式 僅一行 輸出1個整數,表示可以滑行的最大長度。樣例輸入 5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 ...