資料結構筆記 46 動態規劃(01揹包問題)

2021-10-21 17:32:24 字數 2767 閱讀 6010

下面是演算法的介紹:

先看乙個例項:揹包問題

輸出:

package com.huey.dynamic;

public

class

knapsackproblem

;// 物品的重量

int[

] val =

;// 物品的價值 這裡的val[i] 就是前面講的v[i]

int m =4;

// 揹包的容量

int n = val.length;

// 物品的個數

// 建立二維陣列,表

// v[i][j] 表示在前i 個物品中,能夠裝入容量為j 的揹包中的最大價值

int[

] v =

newint

[n +1]

[m +1]

;// 初始化第一行和第一列,在本程式中,可以不去處理,因為預設就是0

for(

int i =

0; i < v.length; i++

)for

(int i =

0; i < v[0]

.length; i++

)// 根據前面得到的公式來動態規劃處理

for(

int i =

1; i < v.length; i++

)else}}

// 輸出一下v 看看目前的情況

for(

int i =

0; i < v.length; i++

) system.out.

println()

;}}}

為了記錄,放入商品的情況,我們定義乙個二維陣列path。

輸出:

package com.huey.dynamic;

public

class

knapsackproblem

;// 物品的重量

int[

] val =

;// 物品的價值 這裡的val[i] 就是前面講的v[i]

int m =4;

// 揹包的容量

int n = val.length;

// 物品的個數

// 建立二維陣列,表

// v[i][j] 表示在前i 個物品中,能夠裝入容量為j 的揹包中的最大價值

int[

] v =

newint

[n +1]

[m +1]

;// 為了記錄放入商品的情況,我們定義乙個二維陣列

int[

] path =

newint

[n +1]

[m +1]

;// 初始化第一行和第一列,在本程式中,可以不去處理,因為預設就是0

for(

int i =

0; i < v.length; i++

)for

(int i =

0; i < v[0]

.length; i++

)// 根據前面得到的公式來動態規劃處理

for(

int i =

1; i < v.length; i++

)else

else}}

}// 輸出一下v 看看目前的情況

for(

int i =

0; i < v.length; i++

) system.out.

println()

;}// 輸出最後我們放入的哪些商品

// 遍歷path,這樣輸出會把所有的放入情況都得到,其實我們只需要最後的放入

// for (int i = 0; i < path.length; i++)

// }

// }

system.out.

println

("***********************************");

int i = path.length -1;

// 行的最大下標

int j = path[i]

.length -1;

// 列的最大下標

while

(i >

0&& j >0)

i--;// 找到乙個存放的商品了,再找下乙個}}

}

c語言資料結構 01揹包問題 動態規劃

兩天的時間都在學習動態規劃 小作業 01揹包問題 資料結構老師布置的這個小作業還真是讓人傷頭腦,自己實在想不出來了便去網上尋找講解,看到一篇不錯的文章 通過金礦模型介紹動態規劃 但是 兩天的時間才完成這個lab 總結 1.思維思路要清晰。2.題目資訊要看清楚。3.改 過程中注意小變數的數值是否同步變...

動態規劃 01揹包

最優二叉查詢樹.cpp 定義控制台應用程式的入口點。01揹包問題。include stdafx.h include include define n 3 the number of real node define m 10 using namespace std int tmain int arg...

01揹包動態規劃

0 1揹包 問題描述 乙個旅行者有乙個最多能用 m公斤的揹包,現在有 n件物品,它們的重量 分別是w1,w2 wn,它們的價值分別為 c1,c2,cn.若每種物品只有一 件求旅行者能獲得最大總價值。輸入格式 w 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 w第2.n 1 行...