01揹包,完全揹包,多重揹包

2021-09-24 04:43:24 字數 2204 閱讀 4565

下面來看**:

#include

#include

#include

#include

using

namespace std;

// 01揹包解法1

// 01揹包二維陣列的是順序的** f[i][j] 代表前i個物品 揹包裝了重量為j的物品的最大利潤

intbag_01

(int f[7]

[13],

int cost,

int v,

int ba**,

int size)

}return f[5]

[ba**];}

// 01揹包解法2

// 01揹包問題改進

intbag_better

(int f,

int cost,

int v,

int ba**,

int size)

}return f[ba**];}

// 完全揹包解法1

// 完全揹包問題就是加了乙個迴圈

//完全揹包在選第i種物品時,容積夠用情況下,可能有2種以上狀態可選,放1個,或者2個,3個,無限,或者不放。找出最大價值的選擇

intbag_wanquan

(int f,

int cost,

int v,

int ba**,

int size)}}

return f[ba**];}

// 完全揹包解法2

intbag_wanquan2

(int f,

int cost,

int v,

int ba**,

int size)

}return f[ba**];}

//多重揹包問題 放的數量有限制num[i]

intbag_multi

(int f,

int cost,

int v,

int ba**,

int num,

int size)}}

return f[ba**];}

intmain()

;// 每個物品的花費

int v[5]

=;// 相對應的物品所占用的體積

int num[6]

=;// 多重揹包問題,每個物品的數量

int size =

sizeof

(cost)

/sizeof

(int);

// 物品的數量

int f[7]

[13]=

;// 01揹包二維陣列的初始化

int f2[13]

=;// 01揹包方法2中用到的一維陣列的初始化

int f3[13]

=;// 完全揹包和多重揹包中用到的一維陣列的初始化

int ba** =12;

// 揹包的容量

int bag_01 =

bag_01

(f, cost, v, ba** ,size)

; cout <<

"01揹包問題: "

<< bag_01

bag_better

(f2, cost, v, ba** ,size)

; cout <<

"01揹包優化問題: "

<< bag_02 << endl;

int bag_wanquan =

bag_wanquan

(f3, cost, v, ba**, size)

; cout <<

"完全揹包問題: "

<< bag_wanquan << endl;

int bag_wanquan2 =

bag_wanquan2

(f3, cost, v, ba**, size)

; cout <<

"完全揹包問題2: "

<< bag_wanquan << endl;

int bag_multi =

bag_multi

(f3, cost, v, ba**,num, size)

; cout <<

"多重揹包問題: "

<< bag_multi << endl;

return0;

}

參考部落格:

揹包 01揹包,完全揹包,多重揹包

哈哈 01揹包 f i v max 完全揹包 f i v max 多重揹包 f i v max include include include include include define maxn 1000 using namespace std int n,cap int w maxn 重量 花...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包,每種物品均只有一件。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。include include includeusing namespace std const int n 1000 10 int ...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包。每種物品均只有一件 第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。完全揹包 completepack 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求...