**:東風破的部落格
[cpp]
view plain
copy
#include
#define max_num 5
#define max_weight 10
using
namespacestd;
//動態規劃求解
intzero_one_pack(
inttotal_weight,
intw,
intv,
intflag,
intn) ;
//c[i][j]表示前i個物體放入容量為j的揹包獲得的最大價值
// c[i][j] = max
//第i件物品要麼放,要麼不放
//如果第i件物品不放的話,就相當於求前i-1件物體放入容量為j的揹包獲得的最大價值
//如果第i件物品放進去的話,就相當於求前i-1件物體放入容量為j-w[i]的揹包獲得的最大價值
for(
inti = 1; i
<= n; i++)
else
else
} }
} //下面求解哪個物品應該放進揹包
inti = n, j = total_weight;
while(c[i][j] != 0)
}returnc[n][total_weight];
} //回溯法求解
intmain() ;
intv[4] = ;
intflag[4];
//flag[i][j]表示在容量為j的時候是否將第i件物品放入揹包
inttotal_value = zero_one_pack(total_weight, w, v, flag, 3);
cout
<<
"需要放入的物品如下"
<< endl;
for(
inti = 1; i
<= 3; i++)
cout
<<
"總的價值為: "
<< total_value
<< endl;
return0;
}
01揹包問題 C
有i件物品和乙個容量為volume total的揹包。第n件物品的體積是c n 價值是w n 體積是指物品在揹包中佔據的位置,即放入的物品的總體積不能揹包總容量 每種物品僅有一件,可以選擇放或不放。求解將哪些物品裝入揹包可使價值總和最大。輸入物品的總個數i,和揹包的最大容積volume total ...
01揹包,完全揹包C 實現
首先,上自己的 由於 注釋詳細,我就不解釋啦。看 就好o o。轉換為了01揹包問題求解。部分演算法與測驗資料資料參照了 不了解01揹包演算法的同學也可以到上述 先學習。本 可以輸出價值與揹包中的物品。先為大家雙手奉上執行結果。define volumn 14 揹包總容量為volumn 1 defin...
回溯法 0 1揹包問題(C 實現)
概念 回溯法是一種非常有效的方法,有 通用的解題法 之稱。它有點像窮舉法,但是更帶有跳躍性和系統性,他可以系統性的搜尋乙個問題的所有的解和任一解。回溯法採用的是深度優先策略。三個步驟 針對所給問題,定義問題的解空間 確定易於搜尋的解空間結構 以深度優先的方式搜尋解空間。優化方法 搜尋過程使用剪枝函式...