package com.kartik.knapsack;public // A Dynamic Programming based solution for 0-1 Knapsack problemclass Knapsack{// A utility function that returns maximum of two integersstatic int max(int a, int b) { return (a > b)? a : b; }// Returns the maximum value that can be put in a knapsack of capacity Wstatic int knapSack(int W, int wt[], int val[], int n){// Base Caseif (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 solutionif (wt[n-1] > W)return knapSack(W, wt, val, n-1);// Return the maximum of two cases:// (1) nth item included// (2) not includedelse return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),knapSack(W, wt, val, n-1));}// Driver program to test above functionpublic static void main(String args[]){int val[] = new int[]{60, 100, 120};int wt[] = new int[]{10, 20, 30};int W = 50;int n = val.length;System.out.println(knapSack(W, wt, val, n));}}Out put:220
Next
« Prev Post
« Prev Post
Previous
Next Post »
Next Post »
Post a Comment
Subscribe to:
Post Comments (Atom)