// Returns the maximum value that can be put in a knapsack of capacity W int knapSack(int W, int wt[], int val[], int n) { // Base Case if (n == 0 || W == 0) return 0; // If weight of the nth item is more than Knapsack capacity W, then // this item cannot be included in the optimal solution if (wt[n-1] > W) return knapSack(W, wt, val, n-1); // Return the maximum of two cases: (1) nth item included (2) not included else return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1), knapSack(W, wt, val, n-1) ); }
int main() { freopen("input.txt","r",stdin); int testcase; scanf("%d",&testcase); while(testcase--) { memset(ks,0,sizeof(ks)); int prices[1001], weights[1001]; int i,objects; scanf("%d",&objects); for(i=0; i<objects; i++) scanf("%d %d",prices+i,weights+i); int p , sum = 0, wt; scanf("%d",&p); for(i=0; i<p; i++) { scanf("%d",&wt); sum+=knapSack(wt,weights,prices,objects); } printf("%d\n",sum); } return 0; }
int knapSack(int W, int wt[], int val[], int n) { if (n == 0 || W == 0) return 0; if(ks[n][W]) return ks[n][W]; if (wt[n-1] > W) return ks[n][W] = knapSack(W, wt, val, n-1); else return ks[n][W] = max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1), knapSack(W, wt, val, n-1) ); }
int main() { int val[] = {60, 100, 120}; int wt[] = {10, 20, 30}; int W = 50; int n = sizeof(val)/sizeof(val[0]); printf("%d", knapSack(W, wt, val, n)); return 0; }
int main(){ int a[]={10,20,30}; int w=50; int val[]={60,100,120}; int n=sizeof(a)/sizeof(a[0]); printf("\nMaximum profit is:%d",knapSack(a,val,n,w)); printf("\n"); return 0; }
int main() { int val[] = {1, 2, 3}; int wt[] = {4, 3, 4}; int W = 10; int n = sizeof(val)/sizeof(val[0]); printf("%d", knapSack(W, wt, val, n)); return 0; }
int main() { int val[] = {7, 8, 4}; int wt[] = {3, 8, 6}; int W = 10; int n = sizeof(val)/sizeof(val[0]); printf("%d", knapSack(W, wt, val, n)); return 0; }
// Driver program to test above function int main() { int wt[] = {2, 3, 4, 5}; int val[] = {3, 7, 2, 9}; int W = 5; int n = sizeof(val)/sizeof(val[0]); printf("%d", knapSack(W, wt, val, n)); return 0; }
int main() { scanf("%d %d",&W,&n); for(int i=0;i<n;i++) { scanf("%d %d",&wt[i],&val[i]); } printf("%d", knapSack(W, wt, val, n)); return 0; }
int main() { int n; scanf("%d",&n); int val[n],wt[n]; for(int i=0;i<n;i++) scanf("%d",&val[i]); for(int i=0;i<n;i++) scanf("%d",&wt[i]); printf("%d", knapSack(W, wt, val, n)); system("pause"); return 0; }