01背包问题
#include<iostream>
using namespace std;
const int Max =1005;
int v[Max],w[Max];
int f[Max];//f[n]表示体积为n时的总价值最大的情况
int main(){
int V,N;
cin>>N>>V;
for(int i=1;i<=N;i++){
cin>>v[i]>>w[i];
}
f[0]=0;
for(int i=1;i<=N;i++){
for(int j=V;j>=1;j--){//逆序:更新f[i][j]时会用到f[i-1][j],如果为正序会使得更新f[i][j]时用到的是f[i][j]
if(j>=v[i]){//j代表的是体积,当体积大于当前物品体积时,即可更新f[j]
f[j]=max(f[j],f[j-v[i]]+w[i]);
}
}
}
cout<<f[V]<<endl;
}