2.小明的背包1 - 蓝桥云课 (lanqiao.cn)
#include <bits/stdc++.h>
using namespace std;
const int N=1010;//开始写的105 开小了 样例过了但最后只过了很少一部分
int n,m;
int v[N],w[N];
int f[N][N];int main()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];}for(int i=1;i<=n;i++)//0个物品的质量 也是0 所以没必要从0开始{for(int j=1;j<=m;j++){f[i][j]=f[i-1][j];//当不放第i个物品时,也能达到最大值的情况 就是有没有i都无所谓 if(j>=v[i])//剩余容量大于第i个的容量 等于这个情况也是可以的要注意!f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);//放第i个物品的时候 背包要空出第i个物品的位置 总质量就多上了第i个物品的重量 比较判断是不是最大值}}cout<<f[n][m]<<endl;// 请在此输入您的代码return 0;
}