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 Streams vs Vavr Streams
Comparing Long Values in Java
Java Program to Check Multiplicability of Two Matrices
Java Program to Find Transpose of a Graph Matrix
Java Program to Implement Disjoint Set Data Structure
Java – String to Reader
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Implement Gauss Jordan Elimination
Hướng dẫn sử dụng Java Generics
Java Program to Implement Ternary Heap
Cài đặt và sử dụng Swagger UI
Spring Security OAuth2 – Simple Token Revocation
Validate email address exists or not by Java Code
Java Program to Find Nearest Neighbor for Static Data Set
Predicate trong Java 8
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Enum trong java
Java Program to Construct a Random Graph by the Method of Random Edge Selection
Spring Boot - Rest Template
Jackson – Decide What Fields Get Serialized/Deserialized
New Features in Java 15
A Guide to ConcurrentMap
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
The Spring @Controller and @RestController Annotations
Redirect to Different Pages after Login with Spring Security
Pagination and Sorting using Spring Data JPA
Map Interface trong java
Use Liquibase to Safely Evolve Your Database Schema
Create a Custom Exception in Java
Java Program to Implement Quick Sort with Given Complexity Constraint
An Intro to Spring Cloud Security