题目
答案
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stack>
using namespace std;
int main()
{
int n,size;
cin>>n>>size;
int weight[n+1],price[n+1],dp[105][1005];
for(int i=1;i<=n;i++)
cin>>weight[i]>>price[i];
for(int i=1;i<=n;i++)
{
for(int j=size;j>=0;j--)
{
if(j>=weight[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+price[i]);
else dp[i][j]=dp[i-1][j];
}
}
cout<<dp[n][size];
}
参考
我参考了这篇文章——0-1背包(动态规划)