0-1揹包問題
給定n個物品和乙個容量為c的揹包,物品i的重量是wi,其價值是vi,0-1揹包問題要求從這n個物品中,選擇裝入揹包的最優組合(物品不可以分割),使得裝入揹包中的物品的總價值最大。
例如,將8件物品放入容量為15的揹包,8件物品的重量和價值分別為:
w =
v =
對0-1揹包問題,可以設計多種貪心策略,如:
重量最輕的物品優先的貪心策略。
價值最大的物品優先的貪心策略。
單位價值最大的物品優先的貪心策略。
隨機選擇物品的貪心策略。
無法數學證明某一種策略的最優性,因此使用貪心法求解0-1揹包問題時,必須盡可能多地列舉各種貪心策略,並從各種貪心策略的執行結果中,找出問題的近似最優解。
#include 「pch.h」
#include
#include
#include
#include
#include
#include
#include"cmath"
#include"cstring"
using namespace std;
struct form ;
int bag=0, thingnum=0;
int cmppi(form a, form b) //按效益值從大到小排序
int cmpwi(form a, form b) //按重量從小到大排序
int cmpxi(form a, form b) //按比例從大到小排序
int suiji(form a, form b)
value(things); //按效益值
weight(things); //按重量值
speval(things); // 按比值
suijiji(things);
return 0;// 執行程式: ctrl + f5 或除錯 >「開始執行(不除錯)」選單
// 除錯程式: f5 或除錯 >「開始除錯」選單
01揹包四種方式實現
暴力遞迴 暴力列舉 param i 輸入規模 param capacity 揹包容量 return 揹包最大價值 public intforceknapsacksr int i,int capacity 每一件商品都被選擇完了 else if i 1 int p1 forceknapsacksr i...
揹包問題 四種解法解題
分別用蠻力法 動態規劃法 回溯法和分支限界法求解0 1揹包問題。注 0 1揹包問題 給定種物品和乙個容量為的揹包,物品的重量是,其價值為,揹包問題是如何使選擇裝入揹包內的物品,使得裝入揹包中的物品的總價值最大。其中,每種物品只有全部裝入揹包或不裝入揹包兩種選擇。1 基本思想 對於有n種可選物品的0 ...
PHP遞迴四種方法
data json data str replace data arr json decode data true print r arr dir foreach arr as k v header content type text html charset utf 8 print r arr p...