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 find the number of occurrences of a given number using Binary Search approach
Creating a Custom Starter with Spring Boot
Java Program to Implement Extended Euclid Algorithm
Hướng dẫn Java Design Pattern – Command
Registration – Activate a New Account by Email
Java Program to Implement RenderingHints API
Java – Random Long, Float, Integer and Double
Java Program to Implement Segment Tree
So sánh HashMap và HashSet trong Java
Spring Cloud AWS – S3
Java Program to Implement Sorted List
Simple Single Sign-On with Spring Security OAuth2
Add Multiple Items to an Java ArrayList
Hướng dẫn Java Design Pattern – Abstract Factory
Java Program to Implement ArrayDeque API
Truyền giá trị và tham chiếu trong java
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Pagination and Sorting using Spring Data JPA
Java Program to Implement Gauss Seidel Method
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Implement Gaussian Elimination Algorithm
Lập trình mạng với java
Java Program to Implement Uniform-Cost Search
Java Program to Implement Suffix Array
Java Program to Implement Floyd Cycle Algorithm
Java Program to Implement Quick sort
Java Program to Implement Borwein Algorithm
Java Program to Implement Flood Fill Algorithm
Java Program to Perform LU Decomposition of any Matrix
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Removing Elements from Java Collections