Java Program to Solve the Fractional Knapsack Problem

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 Program to Implement Merge Sort on n Numbers Without tail-recursion
How to Return 404 with Spring WebFlux
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Spring Data MongoDB – Indexes, Annotations and Converters
Wrapper Classes in Java
Java InputStream to Byte Array and ByteBuffer
Convert String to Byte Array and Reverse in Java
OAuth 2.0 Resource Server With Spring Security 5
Java Program to Find Path Between Two Nodes in a Graph
Java Program to Implement Sorted List
HandlerAdapters in Spring MVC
Java Program to Implement ArrayDeque API
Spring WebClient and OAuth2 Support
Spring Data JPA and Null Parameters
Partition a List in Java
Creating a Generic Array in Java
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java Program to Implement the Checksum Method for Small String Messages and Detect
Difference Between Wait and Sleep in Java
HashSet trong java
Spring’s RequestBody and ResponseBody Annotations
Java Program to Perform Partition of an Integer in All Possible Ways
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Apache Commons Collections MapUtils
Java Program to Implement Bucket Sort
Guide to PriorityBlockingQueue in Java
Java Program to Implement PriorityQueue API
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Hướng dẫn Java Design Pattern – Decorator
Java Program to Construct an Expression Tree for an Infix Expression
Java Program to Implement Queue using Two Stacks
Spring Boot Change Context Path