//****Main**** int main(){ display(); knap(ratio); //enum promoted to int, XXX NOTE reverse(int to enum) not valid displayTaken(); knap(load); displayTaken(); knap(price); displayTaken(); return 0; }
int knap(int cap) { int i, space, max, t; for (i = 0, max = 0; i < N; i++) if ((space = cap-items[i].size) >= 0) if ((t = knap(space) + items[i].val) > max) max = t; return max; }
int knap(int cap) { int i, space, max, t; for (i = 0, max = 0; i < 5; i++) if ((space = cap - item[i].size) >= 0) if ((t = knap(space) + item[i].val) > max) { max = t; printf("max is %d\n", max); } return max; }
int main(){ int v[3] = {60,100,120}; int w[3] = {10,20,30}; clock_t t = clock(); std::cout << knap(w,v,3,50) << std::endl; std::cout << (clock() - (float)t)/CLOCKS_PER_SEC << std::endl; t = clock(); std::cout << knapsack(w,v,3,50) << std::endl; std::cout << (clock() - (float)t)/CLOCKS_PER_SEC << std::endl; return 0; }
int main(void) { items[0].size = 3; items[0].val = 4; items[1].size = 4; items[1].val = 5; items[2].size = 7; items[2].val = 10; items[3].size = 8; items[3].val = 11; items[4].size = 9; items[4].val = 13; printf("%d\n", knap(17)); return 0; }
int main(void) { init(item); knap(17); return 0; }
int knap(int w[],int v[],int n,int weight){ if(n == 0) return 0; if(w[n-1] > weight) return knap(w,v,n-1,weight); return std::max(knap(w,v,n-1,weight-w[n-1])+v[n-1], knap(w,v,n-1,weight)); }