#include <iostream> using namespace std; int w[25],c[25],v[25],maxx; int main(){ int n,wk; cin>>n>>wk; for(int i=1;i<=n;i++) cin>>w[i]; for(int i=1;i<=n;i++) cin>>c[i]; while(v[0]==0){ int sumw=0,sumc=0,k=n; } while(v[k]==1){//从右往左找第一个0的位置 v[k]--;//在此之前的都变0 k--; } v[k]=1; //找到后该位变1 for(int i=1;i<=n;i++){ sumw+=v[i]*w[i]; sumc+=v[i]*c[i]; } if(sumw<=wk&&sumc>maxx) maxx=sumc; } cout<<maxx; return 0; }
#转载请注明出处!