评论的组成
隐藏
内容
划掉
居中
书法字
颜色大全:
红 紫红 粉红 品红 深红 橙 粉 黄 绿 青 蓝 紫 黑 金 银 棕 灰 蓝紫 浅橙 棕黄 黄褐 海蓝 青绿 深蓝 淡紫 褐红 深褐 赭黄 土黄
隐身区(仔细食用):
白 、乳白、天蓝、
淡紫、 浅褐、橘黄
代码
万能头文件
#include<bits/stdc++.h>
DP多重背包
//创建变量
int 种类,容量;
int 数量[种类],体积[种类],价值[种类];
int DP[种类][容量];
int main(){
//输入
cin>>种类>>容量;
for(int c=1;c<=种类;c++){
cin>>数量[c]>>体积[c]>>价值[c];
}
//运算
for(int c=1;c<=种类;c++){//枚举种类
for(int v=0;v<=容量;v++){//枚举在剩余v的容量时(物品体积可能是0)
for(int b=0;b<=数量[c];b++){//枚举放入b个第c种物品
if(v>=b*体积[c]){//判断装b个第c种物品时能否让背包剩余v的容量
//比较放入?个第c种物品后剩余v的容量时的新规划与旧规划那个价值大
y[c][v]=max(y[c][v],y[c-1][v-b*体积[c]]+b*价值[c]);
}else{
//因为b只增不减,总体积只会越来越大
//所以当背包装不下b个第c种物品时,后面的就没必要判断了
break;//直接终止循环,节省运行时间
}
}
}
}
//输出
cout<<DP[种类][容量];
return 0;
}
//<<setprecision(1)<<fixed