int KnapsackProblem(int *pweight, int *pvalue, int n, int w)
{
int *ptbl=malloc(sizeof(int)*(w+1));
memset(ptbl, 0, sizeof(int)*(w+1));
for(int i=0; i<n; ++i)
for(int j=w; j>=pweight[i]; --j)
if(ptbl[j]<pvalue[i]+ptbl[j-pweight[i]])
ptbl[j]=pvalue[i]+ptbl[j-pweight[i]];
w=ptbl[w];
free(ptbl);
return w;
}
{
int *ptbl=malloc(sizeof(int)*(w+1));
memset(ptbl, 0, sizeof(int)*(w+1));
for(int i=0; i<n; ++i)
for(int j=w; j>=pweight[i]; --j)
if(ptbl[j]<pvalue[i]+ptbl[j-pweight[i]])
ptbl[j]=pvalue[i]+ptbl[j-pweight[i]];
w=ptbl[w];
free(ptbl);
return w;
}