这也是个01背包,只是装的很。。。
#include<bits/stdc++.h> #define MAXN 45010 using namespace std; int f[MAXN],w[MAXN],c[MAXN],n,v; int main(){ scanf("%d%d",&v,&n); for(int i=1;i<=n;i++) scanf("%d",&w[i]); for(int i=1;i<=n;i++) for(int j=v;j>=w[i];j--) f[j]=max(f[j],f[j-w[i]]+w[i]); printf("%d ",f[v]); return 0; }