#include
using
namespace std;
const
int n =6;
//物品的數量
const
int w =10;
//揹包最大容量
int m[n]
[w];
int v[n]=;
//物品價值, 0號位置為空
int w[n]=;
//物品重量, 0號位置為空, 不使用
int x[n]
;void
knapsack
(int v,
int w,
int c,
int n,
int m[n]
[w])
//前面沒討論物品1,對物品1單獨討論
m[1][c]
= m[2]
[c];
if(c >= w[1]
) m[1]
[c]=
max(m[1]
[c], m[2]
[c - w[1]
]+ v[1]
);}void
traceback
(int m[n]
[w],
int w,
int c,
int n,
int x)
//回溯
} x[n]
=(m[n]
[c])?1
:0;}
intmain()
cout << endl;
cout <<
"最優值為:"
<< endl;
cout << m[1]
[w]<< endl;
return0;
}
動態規劃演算法實現0 1揹包問題
package suanfa.dynamic 0 1揹包問題 使用動態規劃的演算法進行實現 author bxh public class knapsackproblem int value int target 10 二維陣列 記錄每個重量下的最大value值 int v new int valu...
01揹包問題 (動態規劃演算法)
0 1 揹包問題 給定 n 種物品和乙個容量為 c 的揹包,物品 i 的重量是 wi,其價值為 vi 問 應該如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?分析一波 面對每個物品,我們只有選擇拿取或者不拿兩種選擇,不能選擇裝入某物品的一部分,也不能裝入同一物品多次。解決辦法 宣告乙個 大...
01揹包問題 (動態規劃演算法)
題目 給定n種物品和乙個容量為v的揹包,物品i的體積是wi,其價值為ci。每種物品只有乙個 問 如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?面對每個物品,我們只有選擇放入或者不放入兩種選擇,每種物品只能放入一次。我們用之前同樣的思路來走一遍試試 假設只剩下最後一件物品,我們有兩種選擇 ...