acwing_01背包

#include <iostream>
#include <algorithm>
using namespace std;
const int MAX=1010;
int f[MAX][MAX];//表示装了前i个背包后的最大价值是多少
int v[MAX],w[MAX];
int main()
{
int n,m;
cin>>n>>m;
for(int i =1;i<=n;++i)
cin>>w[i]>>v[i];
for(int i =1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{ if(j<w[i])
f[i][j]=f[i-1][j];
else
f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
}

}
cout<< f[n][m];
return 0;
}

注意样例读入顺序,输出格式,还有变量声明技巧;

原文地址:https://www.cnblogs.com/WAsbry/p/12688785.html