多重揹包問題是指:有n種物品和乙個容量為v的揹包。第i種物品最多有n[i]件可用,每件體積是v[i],價值是w[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。
/*** 多重揹包:
* 有n種物品和乙個容量為v的揹包。第i種物品最多有mi件可用,
* 每件耗費的空間是ci,價值是wi。
* 求解將哪些物品裝入揹包可使這些物品的耗費的空間總和不超過揹包容量,且價值總和最大。
*/#include #include int max(int a, int b)
#define maxn 100005
int c[maxn], w[maxn], num[maxn];//c:費用 w:價值 num:數量
int dp[maxn];
int v; //v:容量 v1:容量2
//01揹包
void zeroonepack(int c, int w)
}//完全揹包
void completepack(int c, int w)
}//多重揹包
void multiplepack(int c, int w, int num)
else
zeroonepack(num*c, num*w); }}
int main()
return 0;}/*
110 5
5 1 1
4 2 1
3 3 1
2 4 1
1 5 1
**14
*/
多維多重揹包問題 多重揹包問題
悼念512汶川大 遇難同胞 珍惜現在,感恩生活 急!災區的食物依然短缺!為了挽救災區同胞的生命,心繫災區同胞的你準備自己採購一些糧食支援災區,現在假設你一共有資金n元,而市場有m種大公尺,每種大公尺都是袋裝產品,其 不等,並且只能整袋購買。請問 你用有限的資金最多能採購多少公斤糧食呢?後記 人生是乙...
揹包問題 多重揹包
有n種物品和乙個容量為w的揹包。第i種物品最多有n i 件可用,每件重量是w i 價值是v i 求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量,且價值總和最大。1.使用三重迴圈進行遞推 狀態轉移式為 dp i j max 關鍵 如下 void solve printf d n dp n ...
多重揹包問題
有n種物品和乙個容量為v的揹包。第i種物品最多有n i 件可用,每件費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。這題目和完全揹包問題很類似。基本的方程只需將完全揹包問題的方程略微一改即可,因為對於第i種物品有n i 1種策略 取0件,取1件...