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