
- Java Data Structures Resources
- Java Data Structures - Quick Guide
- Java Data Structures - Resources
- Java Data Structures - Discussion
Java Data Structures - knapsack problem
Following is the solution of the knapsack problem in Java using dynamic programming technique.
Example
public class KnapsackExample { static int max(int a, int b) { return (a > b)? a : b; } public static int knapSack(int capacity, int[] items, int[] values, int numOfItems ) { int i, w; int [][]K = new int[numOfItems+1][capacity+1]; // Build table K[][] in bottom up manner for (i = 0; i <= numOfItems; i++) { for (w = 0; w <= capacity; w++) { if (i==0 || w==0) { K[i][w] = 0; } else if (items[i-1] <= w) { K[i][w] = max(values[i-1] + K[i-1][w-items[i-1]], K[i-1][w]); } else { K[i][w] = K[i-1][w]; } } } return K[numOfItems][capacity]; } public static void main(String args[]) { int[] items = {12, 45, 67, 90, 45}; int numOfItems = items.length; int capacity = 100; int[] values = {1200, 4500, 6700, 9000, 4500}; int x = knapSack(capacity, items, values, numOfItems ); System.out.println(x); } }
Output
9000
Advertisements