代码如下:
#include <iostream>
using namespace std;
int main()
{
int v[1314];
int w[1314];
int k[520][1314];
int n,m;
cin >> n>> m;
for(int i=1;i<=n;i++)
{
cin>>v[i]>>w[i];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(j<v[i])//
{
k[i][j]=k[i-1][j];
}
else
{
k[i][j]=max(k[i-1][j],k[i-1][j-v[i]]+w[i]);
}
}
cout<<k[n][m]<<endl;
system("pause");
return 0;
}
了解和掌握了状态转移方程:f[i][j]为前i个物品下,背包容量为j下,所能得到的最大价值。
知道了max()函数可以比较输入的两个值谁最大。