#include <stdio.h> #define N 6 #define W 21 int B[N][W] = {0}; int w[6] = {0,2,2,6,6,4}; int v[6] = {0,6,3,5,4,6}; void knapsack() { int k,C; for (k=1;k<N;k++) { for(C=1;C<W;C++) { if(w[k] > C) { B[k][C] = B[k-1][C]; } else { int value1 = B[k-1][C-w[k]]+v[k]; int value2 = B[k-1][C]; if (value1 > value2) { B[k][C] = value1; } else { B[k][C] = value2; } } } } } int main() { knapsack(); printf("%d ",B[5][20]); return 0; }