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

2021-07-23 08:45:54 字數 1442 閱讀 2710

01揹包

#include int c[101][1001]=;//定義100個物品1000重量的總價值陣列

void calcmaxvalues(int n,int t_w)

,v[101]=;//w單個物品的重量,v單個物品的價值

for(i=1;i<=n;i++)

for(i=1;i<=n;i++)

else

}else

} }printf("%d",c[n][t_w]);

}int _tmain(int argc, _tchar* argv)

01揹包的空間優化版

#include int c[1001]=;//空間優化

void calcmaxvalueaboutbagpack_optimize(int n,int t_w)

,v[101]=; //w單個物品的重量,v單個物品的價值

for(i=1;i<=n;i++)

for(i=1;i<=n;i++)//n件物品

}} printf("%d",c[t_w]);

}int main()

完全揹包

都是空間優化過的,這個還可以進行優化。如果物品a的價值小於物品b的價值,且物品a的容量大於物品b,那麼物品a不用考慮。

#include int c[1001]=;//空間優化

void fullbagpack(int n,int t_w)

,v[101]=; //w單個物品的重量,v單個物品的價值

for(i=1;i<=n;i++)

for(i=1;i<=n;i++)//n件物品

}} printf("%d",c[t_w]);

}int _tmain(int argc, _tchar* argv)

多層揹包

空間優化過

#include int c[1001]=;//空間優化

void calcmaxvalueaboutmultiplebagpack_optimize(int t_n,int t_w)

,v[101]=,n[101]=; //w單個物品的重量,v單個物品的價值,n表示每個物品的件數

for(i=1;i<=t_n;i++)

for(i=1;i<=t_n;i++)//n件物品

}else }}

} //列印**看看是否與預期的一樣

for(int k=1;k<=t_w;k++)

printf("\n");

} printf("%d",c[t_w]);

}int main()

說明:_tmian 是vs2010開發環境生成的,換成mian即可。

揹包 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 求...