就是说,只能用一次,怎么求种类数?
int n,m;cin>>n>>m; int now=0; while(n--){ int x;cin>>x; for(int i=1;i<=x;i<<1){ w[++now]=i;x-=i; } if(x) w[++now]=x; } //f[0]=1; // for(int i=1;i<=now;++i){ // for(int j=m;j>=w[i];--j){ // f[j]+=f[j-w[i]]; // } // } // cout<<f[m]<<endl;