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:
Java 14 Record Keyword
Check If a File or Directory Exists in Java
Check if a String is a Palindrome in Java
Java Streams vs Vavr Streams
Giới thiệu Google Guice – Dependency injection (DI) framework
Adding a Newline Character to a String in Java
Serialization và Deserialization trong java
Thao tác với tập tin và thư mục trong Java
The StackOverflowError in Java
Java Program to Implement Find all Forward Edges in a Graph
Mệnh đề Switch-case trong java
Java Program to Perform Stooge Sort
OAuth2.0 and Dynamic Client Registration
Marker Interface trong Java
Getting Started with Stream Processing with Spring Cloud Data Flow
Java Program to Implement LinkedBlockingQueue API
The Dining Philosophers Problem in Java
Java program to Implement Tree Set
Convert char to String in Java
Running Spring Boot Applications With Minikube
Hướng dẫn Java Design Pattern – Memento
Spring Boot - Code Structure
Java Program to Find the Edge Connectivity of a Graph
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Chương trình Java đầu tiên
Quick Guide to Spring Controllers
Template Engines for Spring
Spring REST API with Protocol Buffers
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Testing an OAuth Secured API with Spring MVC
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Hướng dẫn Java Design Pattern – DAO