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:
Concatenating Strings In Java
Life Cycle of a Thread in Java
Extract network card address
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Từ khóa throw và throws trong Java
Java Program to Implement Regular Falsi Algorithm
How to Get a Name of a Method Being Executed?
A Guide to ConcurrentMap
HttpClient 4 – Follow Redirects for POST
Command-Line Arguments in Java
Java Program to Implement AA Tree
Java Program to Implement Hopcroft Algorithm
Java Program to Perform Matrix Multiplication
Java – File to Reader
Java Program to Implement K Way Merge Algorithm
The DAO with Spring and Hibernate
An Intro to Spring Cloud Task
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Java Concurrency Interview Questions and Answers
Java Collections Interview Questions
REST Web service: Basic Authentication trong Jersey 2.x
Java Program to Perform LU Decomposition of any Matrix
Java Program to Implement LinkedBlockingQueue API
Jackson – Change Name of Field
Merging Streams in Java
Luồng Daemon (Daemon Thread) trong Java
Java Program to Compute Discrete Fourier Transform Using Naive Approach
A Guide to Java HashMap
Create a Custom Exception in Java
Prevent Cross-Site Scripting (XSS) in a Spring Application
Java InputStream to Byte Array and ByteBuffer