题目大意:
给你n个物品,
第一行给出n
第二行给出第i个物品的价值
第三行给出第i个物品的重量
第四行给出背包总重量
要求给出可得最大价值
代码如下:
#include<iostream>
#include<vector>
using namespace std;
//0 1背包
int main(){
int n;
scanf("%d",&n);
vector<int>val(n);
vector<int>weight(n);
for(int i=0;i<n;++i){
scanf("%d",&val[i]);
}
for(int i=0;i<n;++i){
scanf("%d",&weight[i]);
}
vector<vector<int > >d(1000,vector<int>(1000));
int maxweight;
scanf("%d",&maxweight);
for(int i=0;i<=n;++i){
for(int j=0;j<=maxweight;++j){
d[i][j]=(i==0)?0:d[i-1][j];
if(i>0&&j>=weight[i-1]&&d[i][j]<d[i-1][j-weight[i-1]]+val[i-1])d[i][j]=d[i-1][j-weight[i-1]]+val[i-1];
cout<<d[i][j]<<ends;
}
}
printf("%d\n",d[n][maxweight]);
return 0;
}