1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
using namespace std; int List[1005][1005]; int w[1005];//价值 int v[1005];//体积 int s[1005];//件数 int N,V; int k; int main() { cin>>N>>V; w[0]=v[0]=0; for(int i=1;i<N+1;i++){ scanf("%d%d%d",&v[i],&w[i],&s[i]); } memset(List,0,sizeof(List)); for(int i=1;i<N+1;i++){ for (int j=0;j<V+1;j++){ k=min(s[i],j/v[i]); for(int t=0;t<=k;t++){ List[i][j]= max(List[i][j],List[i-1][j-t*v[i]]+t*w[i]); }
} } cout<<List[N][V]; return 0; }
|