01背包问题。以前没有做过,也没学过,所以在百度上学习了一下,链接:http://baike.baidu.com/view/841810.htm
AC代码如下:
#include <iostream> using namespace std; const int MAXLEN=1010; int f[MAXLEN]; int c[MAXLEN]; int w[MAXLEN]; int main() { int n,v,i,j,cas; cin>>cas; while(cas--) { cin>>n>>v; memset(f,0,sizeof(f)); for(i=0;i<n;i++) cin>>w[i]; for(i=0;i<n;i++) cin>>c[i]; for(i=0;i<n;i++) for(j=v;j>=c[i];j--) f[j]=(f[j]>f[j-c[i]]+w[i]?f[j]:f[j-c[i]]+w[i]); cout<<f[v]<<endl; } }