This is java program to implement Knapsack problem using Dynamic programming.Given weights and values of n items, put these items in a knapsack of capacity W to get the maximum total value in the knapsack. Consider all subsets of items and calculate the total weight and value of all subsets. Consider the only subsets whose total weight is smaller than W. From all such subsets, pick the maximum value subset.
Here is the source code of the Java Program to Solve Knapsack Problem Using Dynamic Programming. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is the java program to implement the knapsack problem using Dynamic Programming
import java.util.Scanner;
public class Knapsack_DP
{
static int max(int a, int b)
{
return (a > b)? a : b;
}
static int knapSack(int W, int wt[], int val[], int n)
{
int i, w;
int [][]K = new int[n+1][W+1];
// Build table K[][] in bottom up manner
for (i = 0; i <= n; i++)
{
for (w = 0; w <= W; w++)
{
if (i==0 || w==0)
K[i][w] = 0;
else if (wt[i-1] <= w)
K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]);
else
K[i][w] = K[i-1][w];
}
}
return K[n][W];
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number of items: ");
int n = sc.nextInt();
System.out.println("Enter the items weights: ");
int []wt = new int[n];
for(int i=0; i<n; i++)
wt[i] = sc.nextInt();
System.out.println("Enter the items values: ");
int []val = new int[n];
for(int i=0; i<n; i++)
val[i] = sc.nextInt();
System.out.println("Enter the maximum capacity: ");
int W = sc.nextInt();
System.out.println("The maximum value that can be put in a knapsack of capacity W is: " + knapSack(W, wt, val, n));
sc.close();
}
}
Output:
$ javac Knapsack_DP.java $ java Knapsack_DP Enter the number of items: 5 Enter the items weights: 01 56 42 78 12 Enter the items values: 50 30 20 10 50 Enter the maximum capacity: 150 The maximum value that can be put in a knapsack of capacity W is: 150
Related posts:
REST Pagination in Spring
Bootstrap a Web Application with Spring 5
Redirect to Different Pages after Login with Spring Security
Java TreeMap vs HashMap
Create a Custom Auto-Configuration with Spring Boot
Java Program to Implement Treap
Guide to Java OutputStream
Java Program to Implement HashMap API
Map to String Conversion in Java
Using Java Assertions
Java Program to Implement Find all Cross Edges in a Graph
Java Program to Implement AttributeList API
How to Change the Default Port in Spring Boot
Java Program to Implement LinkedBlockingQueue API
Java Program to Perform Stooge Sort
Lớp Properties trong java
New Features in Java 10
Changing Annotation Parameters At Runtime
Java Program to Implement Floyd-Warshall Algorithm
Spring Boot: Customize the Jackson ObjectMapper
Java Program to Implement Graph Structured Stack
Spring Boot - Tomcat Port Number
Serverless Functions with Spring Cloud Function
What is Thread-Safety and How to Achieve it?
Custom Thread Pools In Java 8 Parallel Streams
Java Program to Find Transpose of a Graph Matrix
Introduction to Netflix Archaius with Spring Cloud
Hướng dẫn Java Design Pattern – Decorator
Giới thiệu HATEOAS
Java Program to Convert a Decimal Number to Binary Number using Stacks
Iterating over Enum Values in Java
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation