请问,分组背包怎么打?

学术版

https://www.baidu.com https://google.com https://cn.bing.com
by lemonnyh @ 2019-12-14 14:46:31


@[yangzhiqin](/user/140411) ``` #include <iostream> using namespace std; int main(void) { int f[1001][101]={},w[1001],c[1001],p[1001],m,n,maxf=0; //f[i][j]表示容量为i的背包,在使用前j组物品的最大价值 cin>>m>>n; for (int i=1;i<=n;i++) { cin>>w[i]>>c[i]>>p[i];//w花费 c价值 p组 } for (int i=1;i<=n;i++) { for (int j=m;j>=w[i];j--) { if (f[j][p[i]]<f[j-w[i]][p[i]-1]+c[i]) { f[j][p[i]]=f[j-w[i]][p[i]-1]+c[i]; if (f[j][p[i]]>maxf) maxf=f[j][p[i]]; } } } cout<<maxf<<endl; return 0; } ```
by cindy2007 @ 2019-12-14 15:38:14


@[cindy2007](/user/92991) thanks
by yangzhiqin @ 2019-12-14 15:39:42


|