01揹包 完全揹包 多重揹包

2021-06-21 13:20:09 字數 1017 閱讀 8370

01揹包(zeroonepack)

: 有n件物品和乙個容量為v的揹包, 每種物品均只有一件。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使價值總和最大。  

#include#include#includeusing namespace std;

const int n=1000+10;

int dp[n],c[n],w[n];

int main()

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

for(i=0;i=c[i];j--)

dp[j]=max(dp[j],dp[j-c[i]]+w[i]);

printf("%d\n",dp[v]);

}return 0;

}

完全揹包(completepack)

: 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。  

#include#include#includeusing namespace std;

const int n=10000+10,inf=1000000000;

int dp[n];

int main()

if(inf==dp[v])

cout<<"this is impossible."<

多重揹包(multiplepack)

: 有n種物品和乙個容量為v的揹包,第i種物品最多有n[i]件可用。每件費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

#include#includeusing namespace std;

const int n=110;

int dp[n];

int main()

}cout<

揹包 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 求解將哪些物品裝入揹包可使價值總和最大。完全揹包 completepack 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求...

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

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...