题目:有n个体积和价值不同的物品,有个容量为k的背包,计算背包装得物品的最大价值是多少。
#include<bits/stdc++.h>
using namespace std;
int a[101][101];
int w[101],v[101];
int main(){
int n,k;
cin>>n>>k;//n表示物体数量,k表示背包的容量
for(int i=1;i<=n;i++) cin>>w[i]>>v[i];//输入每个背包的体积和价值
//01背包代码
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
if(j>=w[i]) a[i][j]=max(a[i-1][j],a[i-1][j-w[i]]+v[i]);
else a[i][j]=a[i-1][j];
}
}
for(int i=0;i<=n;i++){
for(int j=0;j<=k;j++) cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}