This is a java program to implement a standard fractional knapsack problem. It is an algorithmic problem in combinatorial optimization in which the goal is to fill a container (the “knapsack”) with fractional amounts of different materials chosen to maximize the value of the selected materials.
Here is the source code of the Java Program to Solve the Fractional Knapsack Problem. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a sample program to implement a fractional knapsack problem
import java.io.IOException;
import java.util.Scanner;
class Fractional_Knapsack
{
public static void main(String args[]) throws IOException
{
int i,j=0,max_qty,m,n;
float sum=0,max;
Scanner sc = new Scanner(System.in);
int array[][]=new int[2][20];
System.out.println("Enter no of items");
n=sc.nextInt();
System.out.println("Enter the weights of each items");
for(i=0;i<n;i++)
array[0][i]=sc.nextInt();
System.out.println("Enter the values of each items");
for(i=0;i<n;i++)
array[1][i]=sc.nextInt();
System.out.println("Enter maximum volume of knapsack :");
max_qty=sc.nextInt();
m=max_qty;
while(m>=0)
{
max=0;
for(i=0;i<n;i++)
{
if(((float)array[1][i])/((float)array[0][i])>max)
{
max=((float)array[1][i])/((float)array[0][i]);
j=i;
}
}
if(array[0][j]>m)
{
System.out.println("Quantity of item number: " + (j+1) + " added is " +m);
sum+=m*max;
m=-1;
}
else
{
System.out.println("Quantity of item number: " + (j+1) + " added is " + array[0][j]);
m-=array[0][j];
sum+=(float)array[1][j];
array[1][j]=0;
}
}
System.out.println("The total profit is " + sum);
sc.close();
}
}
Output:
$ javac Fractional_Knapsack.java $ java Fractional_Knapsack Enter no of items 5 Enter the weights of each items 10 20 30 40 50 Enter the values of each items 5 4 3 2 1 Enter maximum volume of knapsack : 80 Quantity of item number: 1 added is 10 Quantity of item number: 2 added is 20 Quantity of item number: 3 added is 30 Quantity of item number: 4 added is 20 The total profit is 13.0
Related posts:
An Intro to Spring Cloud Contract
Registration – Activate a New Account by Email
Beans and Dependency Injection
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Spring Data JPA @Modifying Annotation
Different Ways to Capture Java Heap Dumps
Posting with HttpClient
Java Program to Describe the Representation of Graph using Incidence Matrix
Hướng dẫn Java Design Pattern – Null Object
Java Program to Decode a Message Encoded Using Playfair Cipher
Java Program to Implement Self organizing List
Spring Boot - Apache Kafka
Disable Spring Data Auto Configuration
Java Program to Implement the String Search Algorithm for Short Text Sizes
Java Program to Represent Graph Using Incidence List
Spring JDBC
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Date Time trong Java 8
Why String is Immutable in Java?
How to Break from Java Stream forEach
New Features in Java 13
Java Program to Implement Bresenham Line Algorithm
Guide to the Fork/Join Framework in Java
Java Program to Implement PriorityQueue API
Apache Commons Collections BidiMap
How to Iterate Over a Stream With Indices
Java Program to Implement DelayQueue API
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
A Quick Guide to Using Keycloak with Spring Boot
Converting String to Stream of chars
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
The Guide to RestTemplate