混合背包的代码也能过
2024-08-23 10:10:11
发布于:上海
3阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
int bb;
int zl;
int jz;
};//定义结构体,记录重量,价值,以及能取夺少?
node arr[10005];//定义数组,后面没用到,我没删
int f[2005];//动归数组
int main(){
int M,N;
cin>>M>>N;//输入
int v,w,s;
int flag=0;
for(int i=1;i<=N;i++){
cin>>v>>w>>s;//输入
if(s==0){//s=0代表无限取
for(int j=v;j<=M;j++){
f[j]=max(f[j],f[j-v]+w);
}
}
else{//else代表只能取一件
for(int k=1;k<=s;k++){
for(int j=M;j>=v;j--){
f[j]=max(f[j],f[j-v]+w);
}
}
}
}
cout<<f[M]<<endl;//输出最大总价值
return 0;
}
这里空空如也
有帮助,赞一个