1 //01背包 2 #include<bits/stdc++.h> 3 using namespace std; 4 const int maxv=1005; 5 const int maxn=105; 6 int n,v_tot,v[maxn],w[maxn],f[maxv],sumv,bound; 7 int main() 8 { 9 scanf("%d%d",&v_tot,&n); 10 for(int i=1;i<=n;++i) scanf("%d%d",&v[i],&w[i]); 11 for(int i=1;i<=n;++i) 12 { 13 for(int j=v_tot;j>=v[i];--j)//常数优化 若背包体积小于该物品体积肯定放不下 循环到v[i]即可 14 f[j]=max(f[j],f[j-v[i]]+w[i]); 15 } 16 printf("%d",f[v_tot]); 17 return 0; 18 }