多重背包模板

#include
#include
int w[10001],c[10001],s[10001],f[100001];
int n,m,i,v,k;
int main(){
  //printf("输入背包容量:");
  scanf("%d",&m);
  //printf("输入物品数量:");
  scanf("%d",&n);
  for (i=1;i<=n;i++){
    //printf("输入第%d个物品的重量及价值与数量:",i);
    scanf("%d%d%d",&w[i],&c[i],&s[i]);
  }
  for (i=1;i<=n;i++)
    for (v=m;v>=0;v--)
      for (k=0;k<=s[i];k++){            //枚举放0~s[i]个 
        if (v-k*w[i]<0) break;
        if (f[v-k*w[i]]+k*c[i]>f[v])
          f[v]=f[v-k*w[i]]+k*c[i];      //贪心      
      } 
  //printf("最大价值为:");
  printf("%d\n",f[m]);
  system("pause>nul");
  return 0;
}

你可能感兴趣的:(模板程序)